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

我研究了 StackOverflow 和 Google,并查看了大多数 StackOverflow 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 编辑课程代码。为下一个问题/答复吸取的教训。

标签: arrays uitableview core-data swift nsobject


【解决方案1】:

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

而不是这个:

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

这样做:

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

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

users += userDataObjects

【讨论】:

  • 谢谢你,马蒂亚斯。它工作得很好。既然你指出了它,它就很有意义(但我确实错过了它)。再次感谢。
猜你喜欢
  • 2018-05-16
  • 1970-01-01
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多