Swift:如何附加到 NSObject 数组?

Posted

技术标签:

【中文标题】Swift:如何附加到 NSObject 数组?【英文标题】:Swift: How to Append to an NSObject Array? 【发布时间】:2014-12-08 06:13:10 【问题描述】:

我研究了 *** 和 Google,并查看了大多数 *** Swift 示例,但我的问题的解决方案仍然难以捉摸。我有需要在 TableView 中显示的带有 userName 和 userAge 的 CoreData。我知道我需要使用带有对象的类,然后在单元格配置中引用对象名称和年龄。

我的自定义类定义为:

class User: NSObject 
    var userName: String
    var userAge: Int
    init(userName: String, userAge: Int) 
        self.userName = userName
        self.userAge = userAge
        super.init()
    

在 TableView 控制器中:

var users: [User] = []

随后是从核心数据模型中检索用户记录的逻辑;然后对于检索到的每条记录:

let userDataObject = [ User(userName: userNameFromCoreData!, userAge: userAgeFromCoreData!)]

问题是当我尝试将每个用户记录附加到数组时,我可以在表中显示数组:

users.append(userDataObject) 

给出一个 Swift 编译器错误 'NSArray' is not a subtype of 'User'。

如果我使用

var users: [AnyObject] = []

users.append(userDataObject) 有效,但我不确定如何从数组中检索用户名和年龄。

我尝试将实体类字段附加为 appName.User(其中 appName 是真正的应用程序名称),但 users.append 仍然失败并出现同样的错误。

我知道这是一个令人沮丧的问题,在某种程度上,我觉得这可能只是上面代码中的语法,但非常感谢您的想法。

【问题讨论】:

感谢 Leonardo 编辑课程代码。为下一个问题/答复吸取的教训。 【参考方案1】:

不要将 User 对象放入数组中?

而不是这个:

let userDataObject = [ User(userName: userNameFromCoreData!, userAge: userAgeFromCoreData!)]
users.append(userDataObject) 

这样做:

let userDataObject = User(userName: userNameFromCoreData!, userAge: userAgeFromCoreData!)
users.append(userDataObject) 

如果你真的想追加一个数组(例如,因为它包含多个对象),你可以使用+ 运算符

users += userDataObjects

【讨论】:

谢谢你,马蒂亚斯。它工作得很好。既然你指出了它,它就很有意义(但我确实错过了它)。再次感谢。

以上是关于Swift:如何附加到 NSObject 数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 3.0 播放附加到图像数组的声音?

如何从 C 中将新的字符串元素附加到 Swift 中的数组

核心数据和数组 swift 2.0

Swift JSON响应两个字段值附加到单个数组中

如何在 Swift 中检索 NSURLRequest 的 HTTPBody 参数到 Dictionary: [NSObject: AnyObject]

如何在 NSObject 类中添加动态行为:Swift