我正在尝试将图像图标存储在CoreData
中,并且在应用程序崩溃后不断出现此错误:
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'属性的值的不可接受类型:property =“weatherIcon”;所需类型= 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中抓取的。
var forecastInfo = [String]()
var icon = UIImage()
我理解错误消息的含义,但是value属性是二进制数据,并且在保存之前已经将图像图标转换为Data了。
除了图标之外,其他所有内容都存储良好。
我想念什么?
实体:预测
属性: weatherIcon: Binary Data, ForecastDetails :字符串
最佳答案
正如Quoc Nguyen所写,您在第6个代码行中有一个错字:
它应该是:
forecast.setValue(iconData, forKey: "weatherIcon")