我正在将核心数据数据库中的对象列表加载到表视图中。[AnyObject]?'没有名为'subscript'的成员
class ScheduleViewController: UITableViewController {
private var items: [AnyObject]?
// MARK: - Table view data source
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if let itemCount = items?.count {
return itemCount
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("DayScheduleCell", forIndexPath: indexPath) as DayScheduleCell
if let act = items[indexPath.row] as Activity {
if act.client != nil {
// ...
}
}
return cell
}
}
的数据被封闭内部检索,因此我已声明的items
数组作为可选的,因为它可能是零在第一次运行。
我得到错误'[AnyObject]?'没有名为'subscript'的成员在此行if let act = items[indexPath.row] as? Activity
。
我想不出如何解决这个问题。
感谢您的回复。我得到一个新的错误**不能在'if act.client!= nil'这一行用'(@lvalue Client,NilLiteralConvertible)'**'类型的参数列表调用'!='。客户端属性是一个拥有“客户端”对象的属性。请参阅Activity的'NSManagedObject' [subclass](http://pastie.org/9584414#)。在数据模型中,在客户端的属性下进行检查,但检查为可选。 – Isuru 2014-09-22 14:32:40
'client'不是可选的,因此它不能是'nil' - 因此你不能检查它是否为零。if'在概念上是多余的,当然被认为是编译器的错误 – Antonio 2014-09-22 14:46:15
所以根据[this](http://stackoverflow.com/q/25485273/1077789)的问题,即使Core Data中的属性被标记为可选,它在生成的NSManagedObject类中没有提及。你必须手动添加它。我在客户端属性前添加了一个'?',现在它工作正常。 – Isuru 2014-09-22 14:47:26