【发布时间】:2018-02-17 18:11:44
【问题描述】:
我正在从在线 API 接收 JSON 数据,我正在尝试将数据放入自定义 TVShow 对象,然后使用 CoreData 保存这些对象。我可以正确打印从 JSON 对象获得的值,但是当我尝试创建 TVShow 对象并使用 CoreData 保存它们时出现错误。有什么建议吗?
Alamofire.request("https://api.tvmaze.com/shows?page=0").responseJSON {
(responseData) -> Void in
if((responseData.result.value) != nil) {
let swiftyJsonVar = JSON(responseData.result.value!)
//print(swiftyJsonVar)
for item in swiftyJsonVar.array! {
print(item["name"].stringValue)
print(item["genres"].arrayValue)
print(Int32(item["id"].intValue))
print(item["type"].stringValue)
print(item["language"].stringValue)
print(item["summary"].stringValue)
if CoreDataHandler.saveObject(
id:Int32(item["id"].intValue),
name:item["name"].stringValue,
type:item["type"].stringValue,
language:item["language"].stringValue,
summary:item["summary"].stringValue,
genres:item["genres"].arrayValue) {
self.tvshows = CoreDataHandler.fetchObject()
}
}
}
}
我收到此错误:
[_SwiftValue encodeWithCoder:]:无法识别的选择器发送到实例 0x6080000a8160
2018-02-15 10:42:38.448476-0800 TV Core Data[81985:5602062] *** -[NSKeyedArchiver dealloc]:警告:NSKeyedArchiver 在没有调用 -finishEncoding 的情况下被释放。
2018-02-15 10:42:38.458710-0800 TV Core Data[81985:5602062] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[_SwiftValue encodeWithCoder:]:无法识别的选择器发送到实例
然而,当我手动创建对象时,使用 for 循环,这行代码可以工作
for item in 1...10 {
if CoreDataHandler.saveObject(id: Int32(item), name: "tim\(item)", type: "drama\(item)", language: "english", summary: "\(item) time running out", genres: ["suspense","drama"]) {
self.tvshows = CoreDataHandler.fetchObject()
}
【问题讨论】:
标签: swift core-data swifty-json