我怎样才能插入一个字符串的二维数组
How can I insert To an 2D array of Strings a String
我有一个表视图,我想在其中包含从我的服务器加载的多个部分,因此我需要一个二维数组。
我试过的是这样的:
var sections = [String]()
var district = [[String]]()
if let objects = objects {
for object in objects {
let town = object["town"] as! String
if !self.sections.contains(town){
self.sections.append(town)
self.district[self.i].append(object["district"] as! String)
self.i += 1
}else{
let f = self.sections.indexOf(town)
self.district[f!].append(object["district"] as! String)
}
}
}
当我 运行 它时,我收到了这条消息:
Index out of range
我试图用 += 插入我的元素,但它甚至不让我 运行 它。
我也试过这个:
self.district[0][0] = object["district"] as! String
我也遇到了同样的错误。
如评论中所述,当您尝试在
处追加时,数组 self.district
中不存在索引为 self.i
的数组元素
self.district[self.i].append(object["district"] as! String)
并且您必须首先向 self.district
追加一个新元素。
你还应该摆脱所有导致
如果失败,程序就会崩溃。您的代码可能如下所示:
var sections = [String]()
var districts = [[String]]()
if let objects = objects {
for object in objects {
if let town = object["town"] as? String,
let dist = object["district"] as? String {
if let idx = sections.indexOf(town) {
districts[idx].append(dist)
} else {
sections.append(town)
districts.append([dist])
}
}
}
}
或者(如一条现已删除的评论中所建议的那样),存储
自定义结构的 单个 数组中的信息:
struct SectionInfo {
let town: String
var districts: [String]
}
var sections = [SectionInfo]()
if let objects = objects {
for object in objects {
if let town = object["town"] as? String,
let dist = object["district"] as? String {
if let idx = sections.indexOf({ [=12=].town == town }) {
sections[idx].districts.append(dist)
} else {
sections.append(SectionInfo(town: town, districts: [dist]))
}
}
}
}
我有一个表视图,我想在其中包含从我的服务器加载的多个部分,因此我需要一个二维数组。
我试过的是这样的:
var sections = [String]()
var district = [[String]]()
if let objects = objects {
for object in objects {
let town = object["town"] as! String
if !self.sections.contains(town){
self.sections.append(town)
self.district[self.i].append(object["district"] as! String)
self.i += 1
}else{
let f = self.sections.indexOf(town)
self.district[f!].append(object["district"] as! String)
}
}
}
当我 运行 它时,我收到了这条消息:
Index out of range
我试图用 += 插入我的元素,但它甚至不让我 运行 它。
我也试过这个:
self.district[0][0] = object["district"] as! String
我也遇到了同样的错误。
如评论中所述,当您尝试在
处追加时,数组self.district
中不存在索引为 self.i
的数组元素
self.district[self.i].append(object["district"] as! String)
并且您必须首先向 self.district
追加一个新元素。
你还应该摆脱所有导致 如果失败,程序就会崩溃。您的代码可能如下所示:
var sections = [String]()
var districts = [[String]]()
if let objects = objects {
for object in objects {
if let town = object["town"] as? String,
let dist = object["district"] as? String {
if let idx = sections.indexOf(town) {
districts[idx].append(dist)
} else {
sections.append(town)
districts.append([dist])
}
}
}
}
或者(如一条现已删除的评论中所建议的那样),存储 自定义结构的 单个 数组中的信息:
struct SectionInfo {
let town: String
var districts: [String]
}
var sections = [SectionInfo]()
if let objects = objects {
for object in objects {
if let town = object["town"] as? String,
let dist = object["district"] as? String {
if let idx = sections.indexOf({ [=12=].town == town }) {
sections[idx].districts.append(dist)
} else {
sections.append(SectionInfo(town: town, districts: [dist]))
}
}
}
}