【发布时间】:2021-01-24 10:27:03
【问题描述】:
我收到了一些服务器响应,它类似于以下格式。
{
"sample_id": "Sample 1",
"token": 2,
"data": [
{
"id": "2",
"date": "Oct 20 2019"
},
{
"id": "3",
"date": "Oct 08, 2019"
}
]
}
为此,我创建了实体并将 attribute 声明为 Transformable 类型。
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”
}
}
有什么建议吗?
【问题讨论】:
-
不要将自定义类型命名为与内置类型相同的名称,因此请将 Data 重命名为其他名称。而且您不能只将 NSManagedObject 的子类转换为您的 struct Info,您需要一些代码在两者之间进行映射。也许您可以将保存信息的代码添加到您的商店中
-
我刚刚根据隐私提供了实体名称示例
标签: ios swift xcode core-data nsmanagedobject