我是一名Swift中的Core Data新手。我有一个单独的NSManagedObject
类,它看起来像这样:
import Foundation
import CoreData
class Polls: NSManagedObject {
@NSManaged var title: String
@NSManaged var pollDescription: String
}
在一个UITableViewController子类中,我有一个获取这些对象的方法,如下所示:
func refreshPolls()
{
//do the query to populate the array
let req = NSFetchRequest(entityName: "Polls")
self.polls = self.managedObjectContext?.executeFetchRequest(req, error: nil) as! [Polls]
println(polls.count)
}
请注意,
self.polls
被定义为 "Polls" 对象的数组。现在,在
cellForRowAtIndexPath:
中,我只是这样做:override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell:UITableViewCell
if indexPath.row==0
{
cell = tableView.dequeueReusableCellWithIdentifier("EditPollCell") as! UITableViewCell
}
else
{
let poll:Polls = self.polls[indexPath.row-1] as Polls
//println(poll.title) //fails with EXC_BAD_ACCESS
cell = tableView.dequeueReusableCellWithIdentifier("PollCell") as! UITableViewCell
//cell.textLabel?.text = (poll.valueForKey("title") as! String)
}
return cell
那个被注释的 println
由于 EXC_BAD_ACCESS
而失败了。没有额外的错误信息,而在 Polls
类的属性中添加 "dynamic" 也没有任何区别。
为什么我无法访问 Polls
对象的属性?使用 valueForKey
方法会失败并显示消息 "Unexpectedly found a nil value when unwrapping an optional",尽管 title
属性有一个值。
var PollDet:PollDetailsViewController=self.storyboard?.instantiateViewControllerWithIdentifier("PollDetailsViewController") as! PollDetailsViewController PollDet.setPoll(self.polls[indexPath.row-1]) self.navigationController?.pushViewController(PollDet, animated: true)
- tutiplain