我试图获取以前保存过的数据,但事情并没有按预期进行。当我尝试打印结果时,出现以下错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
2017-02-26 15:32:32.596867 Money Manager[2047:475120] fatal error: unexpectedly found nil while unwrapping an Optional value
我找不到任何对我有用的答案......
以下是我尝试提取时的代码:
func getExpensesData() {
let fetchRequest: NSFetchRequest<Activity> = Activity.fetchRequest()
do {
let results = try context.fetch(fetchRequest) as [Activity]
activities = results
for activity in activities {
// I get the error I mentionned just the line below
print(activity.title!)
}
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}
}
其中Activity是一个实体。
以下是保存数据时的代码:
func saveNewContent() {
let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let entity: NSEntityDescription = NSEntityDescription.entity(forEntityName: "Activity", in: context)!
let newActivity = NSManagedObject(entity: entity, insertInto: context) as! Activity
if checkFieldsAreValid() {
newActivity.isExpense = expenseBenefitSwitch.isOn
newActivity.isRecurrent = recurrentSwitch.isOn
newActivity.amount = amountView.text
newActivity.title = titleView.text
do {
try context.save()
} catch let error as NSError {
print("Could not save. \(error), \(error.userInfo)")
}
}
}
对不起我本可以犯的一些错误,这是我在这里的第一篇文章。如果您需要其他代码,请告诉我。
提前致谢!!
更新#1:
在运行其他几个测试后,我得到了我尝试保存的数据,即 newActivity ,在保存之前看起来是空的......
当我在
之前放置一个断点时try context.save()
这是我得到的: Structure
更新#2:
在深入搜索之后,我发现问题似乎与CoreData错误相关联,因为当我尝试获取对象的属性之一时会发生错误。
当我打印一个被提取的对象时,我得到了这个:
<Activity: 0x170284dd0> (entity: Activity; id: 0xd000000000040000 <x-coredata://
68148348-928B-43BE-901C-2073ABFA46EF/Activity/p1> ; data: <fault>)
以下是我尝试获取属性时使用的代码(在UITableViewCell的自定义子类中使用):
func initialize(withContent activity: Activity) {
print(activity)
titleLabel.text = (activity.value(forKey: "title") as! String)
}
答案 0 :(得分:0)
好的,在更深入地投资我的应用程序后,我发现由于CoreData而没有引发错误,但由于自定义UITableViewCell我忘记正确初始化...因此,当我尝试做的时候:
textLabel.text = activity.title
由于UILabel而不是活动,它引发了错误......
非常感谢你的帮助,我注意到你的建议!