ios - 我怎样才能插入一个字符串的二维数组

标签 ios arrays swift string 2d

我有一个 TableView ,我想在其中包含从服务器加载的多个部分,因此我需要一个二维数组。

我试过的是这样的:

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].append(object["district"] as! String)

并且您必须首先将一个新元素附加到 self.district

你还应该摆脱所有强制转换 as! 导致 如果失败,程序就会崩溃。您的代码可能如下所示:

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({ $0.town == town }) {
                sections[idx].districts.append(dist)
            } else {
                sections.append(SectionInfo(town: town, districts: [dist]))
            }
        }
    }
}

关于ios - 我怎样才能插入一个字符串的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38591310/

相关文章:

java - 在Java中使用for循环设置数组

c - 我在使用以下具有不同变量类型和指针的代码来查找贝塞尔函数时遇到问题

ios - 以某些值调整大小时, Collection View 标题会闪烁

php - 无法将返回值与字符串进行比较

swift - 使用 NSSavePanel 将文件从 Bundle 保存/复制到桌面

iphone - UIImageView 有 4 个按钮

ios - Xcode 两个项目——一个用于业务逻辑,另一个用于 UI?

ios - 当颜色清除 SwiftUI 时,点击操作不起作用

iphone - 将 NSData 写入桌面文件

c++ - 如何获得 boost 缓冲区的大小