我正在尝试将图像图标存储到CoreData
中,并且在应用程序崩溃后不断收到此错误:
由于未捕获的异常"NSInvalidArgumentException"而终止应用程序,原因:"属性的值类型不可接受的:属性 = "天气图标"; 所需类型 = NSData; 给定类型 = 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")
}
"icon"是从另一个ViewController抓取的,就像forecastInfo一样。
var forecastInfo = [String]()
var icon = UIImage()
我了解错误消息所说的内容,但 value 属性是二进制数据,并且在保存之前我已经将图像图标转换为 Data。 除了图标之外,一切都存储得很好。 我错过了什么?
实体:预测
属性:天气图标:二进制数据,预测详细信息:字符串
正如Quoc Nguyen所写,你的第6行代码有一个错别字:
它应该是:
forecast.setValue(iconData, forKey: "weatherIcon")