问题描述
我收到一些服务器响应,就像下面的格式。
{
"sample_id": "Sample 1","token": 2,"data": [
{
"id": "2","date": "Oct 20 2019"
},{
"id": "3","date": "Oct 08,2019"
}
]
}
为此,我创建了Entity并将属性声明为可转换类型。
static func fetchInfo() -> [Info] {
// Create Fetch Request
let managedContext = someMethod.getContext()
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Entity")
var result = [Info]()
do {
// Execute Fetch Request
let records = try managedContext.fetch(fetchRequest)
if let records = records as? [Info] {
result = records
}
}catch {
print("Unable to fetch managed objects for entity \(String(describing: entity)).")
}
return result
}
但是,在上述方法中,它不在记录中,并且数据未分配给模型(可解码)类。
我可解码的班级是
struct Info: Decodable {
let sampleId: String?
let token: Int?
let data: [Data]?
enum CodingKeys: String,CodingKey {
case sampleId = "sample_id"
case token = "surveys_taken"
case data = "data"
}
}
struct Data: Decodable {
let id: String?
let date: String?
enum CodingKeys: String,CodingKey {
case id = “id”
case date = “date”
}
}
有什么建议吗?
解决方法
尝试这样测试
let fetchRequest: NSFetchRequest<Info> = Info.fetchRequest()
fetchRequest.predicate = NSPredicate(format: "self == %@",self.objectID)
do {
let result = try context.fetch(fetchRequest)
if let info = result.first {
return info
}
} catch {
print("Failed to fetch Info: \(error)",module: coreDataLogModule)
}
return self