Swift:找不到我的NSDictionary的成员init

时间:2015-08-12 22:30:26

标签: ios swift nsdictionary

我正在创建一个NSDictionary来保存tableview的数据。 tableview就像一个联系人列表,联系人按名字分隔并按字母顺序排序,所以我正在制作一个字典来保存这些联系人。字典定义为[String: [User]](),其中User是我自己的对象。

但是,当我检查用户名的第一个字母是否有任何条目时,我的代码出现了编译错误:Could not find member 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]
        }
    }
}

1 个答案:

答案 0 :(得分:2)

你的错误与你的NSDictionary没有任何关系,有时Swift编译器的编译错误不准确,请参阅这篇好文章Swift Compiler Diagnostics

如果你放在行user.firstName!.substringToIndex(1)之外,则会抛出编译错误:

  

无法使用类型为'(Int)'的参数列表调用'substringToIndex'。

这是导致错误的原因,您可以使用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]
        }
    }
}

我希望这对你有所帮助。