我正在制作一个 NSDictionary 来保存 TableView 的数据。表格 View 就像一个联系人列表,联系人按名字分隔并按字母顺序排序,所以我正在制作一个字典来保存这些联系人。该字典定义为 [String: [User]]()
其中 User 是我自己的对象。
但是,当我检查用户名字中是否有第一个字母的条目时,我收到编译错误:在我的代码中找不到成员 init
。
这是我的代码:
var users = CurrentAccount.friends
var organizedUsers = [String: [User]]()
func organizeFriendsByFirstName() {
for user in users {
if let xc = organizedUsers["\(user.firstName!.substringToIndex(1))"] {
} else {
organizedUsers["\(user.firstName!.substringToIndex(1))"] = [user]
}
}
}
最佳答案
您的错误与您的 NSDictionary
没有任何关系,有时 Swift 编译器的编译错误不准确,请参阅这篇好文章 Swift Compiler Diagnostics .
如果您将其放在 user.firstName!.substringToIndex(1)
行之外,则会引发编译错误:
Cannot invoke 'substringToIndex' with an argument list of type '(Int)'.
这就是你的错误的原因,你可以使用advance
函数在 String
中创建索引,请将函数更改为以下内容:
func organizeFriendsByFirstName() {
for user in users {
if let xc = organizedUsers["\(user.firstName!.substringToIndex(advance(user.firstName!.startIndex, 1)))"] {
} else {
organizedUsers["\(user.firstName!.substringToIndex(advance(user.firstName!.startIndex, 1)))"] = [user]
}
}
}
希望这对您有帮助。
关于ios - Swift:找不到我的 NSDictionary 的成员 init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31976505/