我正在尝试将图像图标存储在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")

10-08 05:28