我有包含 String 键和 Objects 数组的字典作为值 . 使用 append 方法将这些值从已排序的对象数组添加到Dictionary中 . 根据对象属性的第一个字母将值分类为键 . 但是返回未排序的Dictionary .
字典被宣布:
var namesDic = [String: [Name]]()
var filteredNames = [String: [Name]]()
并遍历数组并追加到Dictionary中:
for name in names {
let letterIndex = name.getName().index(name.getName().startIndex, offsetBy: 0)
let letter = name.getName()[letterIndex]
if namesDic[String(letter)] != nil {
namesDic[String(letter)]?.append(name)
} else {
namesDic[String(letter)] = [name]
}
}
filteredNames = namesDic
}
名称结构:
struct Name {
var id: Int!
var name: String!
var native: String!
var meaning: String!
var origin: String!
var isFavorite: Bool
var gender: String!
init(id: Int, name: String, native: String, meaning: String, origin: String, isFavorite: Int, gender: String) {
self.id = id
self.name = name
self.native = native
self.meaning = meaning
self.origin = origin
if isFavorite == 0 {
self.isFavorite = false
} else { self.isFavorite = true }
self.gender = gender
}
}
我在调试中发现,当它们被附加到字典时它们是未排序的 . 我理解Swift Dictionary上的排序不起作用,但我想要一个解决方法按键对Dictionary进行排序以将其传递给TableView .
我在这里经历了很多问题/答案,但它们都是 [String: String]
而不是 Array of Objects .
2 回答
根据Apple的文档
更多信息请参见Apple's Website
Workaround
可以做的一件事是创建一个排序键数组,然后使用该数组访问字典值