【发布时间】:2015-04-06 19:22:00
【问题描述】:
我制作了一个 CoreData 应用程序,其中还包含一个 UITableView。该应用程序在启动时将所有 CoreData 条目加载到 UITableViewCells 中。我将 5 个条目保存到 CoreData(字符串类型)中。如果每个 UITableViewCell 都将在cellForRowAtIndexPath 处填充正确的条目,则indexPath.row: 0 处没有条目(nil),但在第 1、2、3、4 和 5 行有一个现有条目。我不知道为什么,但每次如果带有indexPath.row = 0 的单元格加载应用程序时崩溃,原因是:fatal error: unexpectedly found nil while unwrapping an Optional value。 optional value 是我的核心数据模型实体的属性。有人知道为什么indexPath.row = 0 每次都会出现这个错误吗?如果您需要更多信息,请随时问我。非常感谢您的帮助。
获取价值:
let object = self.fetchedResultsController.objectAtIndexPath(indexPath) as NSManagedObject
var dateFromCell = object.valueForKey("datum") as NSDate?
var dateString = Date.toString(date: dateFromCell!)
保存价值:
let myDate:NSDate = NSDate()
let context = self.fetchedResultsController.managedObjectContext
let entity = self.fetchedResultsController.fetchRequest.entity!
let newManagedObject = NSEntityDescription.insertNewObjectForEntityForName(entity.name!, inManagedObjectContext: context) as NSManagedObject
newManagedObject.setValue(myDate, forKey: "datum")
// Save the context.
var error: NSError? = nil
if !context.save(&error) {
abort()
}
【问题讨论】:
-
在您的数组中的索引
0处,您正在存储一个可选值。如果一个可选项包含一个 nil 值并且你解开它,你的程序将会崩溃。因此出现错误消息unexpectedly found nil while unwrapping an Optional value。在使用可选值之前,使用if let语法检查可选的内容。