我试图将我的NSManagedObject转换为字典,以便我可以将其序列化为JSON。
我查看了这个问题:如何将NSManagedObject转换为NSDictionary,但他们的方法似乎与我的非常不同。我也尝试了这个问题中提供的方法:在Swift 3中将CoreData对象转换为JSON。然而,我收到了以下错误:
这里定义了
func fetchRecord() -> [Record] {
let fetchRequest = NSFetchRequest<Record>(entityName:"Record")
let context = PersistenceService.context
fetchRequest.resultType = .dictionaryResultType
do {
records = try context.fetch(Record.fetchRequest())
} catch {
print("Error fetching data from CoreData")
}
print(records)
return records
}
我查看了这个问题:如何将NSManagedObject转换为NSDictionary,但他们的方法似乎与我的非常不同。我也尝试了这个问题中提供的方法:在Swift 3中将CoreData对象转换为JSON。然而,我收到了以下错误:
无法将类型为'NSKnownKeysDictionary1' (0x108fbcaf8)的值强制转换为'iOSTest01.Record' (0x1081cd690)$
我似乎找不到解决方法。
这个错误之前在这里提到过:Core Data:无法将类型'MyType_MyType_2'的值强制转换为MyType,但是没有哪种方法可以解决我的问题。有人能为我提供一个Swift解决方案吗?
更新
为了帮助下面的评论,我添加了以下内容:
var record: Record!
var records = [Record]()
记录+核心数据类:
public class Record: NSManagedObject {
}
记录+核心数据特性:
extension Record {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Record> {
return NSFetchRequest<Record>(entityName: "Record")
}
@NSManaged public var name: String?
}
这里定义了
records
。
records
在哪里定义的?它是如何定义的?- 当resultType = .dictionaryResultType
时,获取请求返回一个由字典组成的数组,这与你的返回类型[Record]
不兼容。 - Martin R