iOS / Swift:图像不会保存到CoreData中,应用程序崩溃

时间:2018-03-16 08:18:24

标签: ios swift persistence

我尝试将图片图标存储到CoreData中,并且在应用崩溃后我一直收到此错误:

  

由于未捕获的异常终止应用' NSInvalidArgumentException',原因:'属性的值不可接受的类型:property =" weatherIcon&#34 ;;所需类型= NSData;给定type = Swift._NSContiguousString;

let appDelegate = UIApplication.shared.delegate as! AppDelegate
let context = appDelegate.persistentContainer.viewContext
let forecast = NSEntityDescription.insertNewObject(forEntityName: "Forecast", into: context)
forecast.setValue("\(forecastInfo)", forKey: "forecastDetails")

let iconData = NSData(data: UIImageJPEGRepresentation(icon, 1.0)!) 
forecast.setValue("\(iconData)", forKey: "weatherIcon")
do {
    try context.save()
    print("Forecast saved")
}catch {
    print("Error saving data")   
}

'图标'正在从另一个ViewController中抓取,就像forecastInfo一样。

var forecastInfo = [String]()    
var icon = UIImage()

我理解错误消息的内容,但是value属性是二进制数据,并且在保存之前我已经将图像图标保存到Data中。 除了图标,一切都存储得很好。 我错过了什么?

实体:预测

属性: weatherIcon:二进制数据, forecastDetails :字符串

1 个答案:

答案 0 :(得分:1)

正如Quoc Nguyen所写,你的第6个代码行中有一个拼写错误:

应该是:

forecast.setValue(iconData, forKey: "weatherIcon")