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

标签 ios swift nsdictionary

我正在制作一个 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/

相关文章:

ios - 处理 Apple 推送通知服务

ios - 使用 KingFisher 获取圆形 ImageView (iOS - Swift)

ios - 如何在 swift-ios 文件中使用 asl.h

objective-c - 在 Objective-C 中显示方法 "parameter names"

ios - NSNumber 与其 floatValue 不同

iphone - 应用程序图标在模拟器中显示正常,但在 iPhone 上运行时,启动图像显示为图标而不是所需的图标

ios - 基于 swift 的单 View iOS 应用程序中的 NXOAuth2Client : how to import the library

objective-c - Swift 框架中的 Google Plus 框架(objc-c) 文件

ios - 使用 Swift 和 Parse 获取 Facebook UserData 时出现 fatal error

ios - 存储在用户默认值中的 Swift 4 键值字典