我已经在一个项目上工作了一段时间,最近升级到Xcode 8和Swift 3.0和iOS 10.但是因为我这样做了,所以我无法编译.
我的每个实体都收到错误:: 0:错误:没有这样的文件或目录:''/ Users/mark/Library /Developer/Xcode/DelivedData /.../.Account+CoreDataProperties.swift'每个案例有个 .实体名称前面的(点)前缀:.Account + CoreDataProperties.swift.
我将Code Gen从"Category/Extension"更改为Manual/None,我做了一个干净整洁的目录,删除了DerivedData目录.有趣的是,当我查看相应的目录时,那里有一个实际的文件,只是没有点前缀.
这非常令人困惑.有人能解释一下吗?我需要解决这个问题才能继续核心数据.
TIA马克
我正在尝试将我的NSManagedObject转换为字典,因此我可以使用序列化它来获取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
}
Run Code Online (Sandbox Code Playgroud)
我已经讨论过这个问题:如何将NSManagedObject转换为NSDictionary,但它们的方法与我的方法非常不同.我还尝试了这个问题中提供的方法:CoreData对象到Swift 3中的JSON.但是我收到了这个错误
无法将'NSKnownKeysDictionary1'(0x108fbcaf8)类型的值转换为'iOSTest01.Record'(0x1081cd690)$
而我似乎无法找到解决方案.
此前已提到错误:核心数据:无法将"MyType_MyType_2"类型的值转换为MyType,但没有一种方法可以解决我的问题.有人能为我提供一个Swift解决方案吗?
更新
为了帮助下面的评论,我添加了以下内容:
var record: Record!
var records = [Record]()
Run Code Online (Sandbox Code Playgroud)
记录+ CoreDataClass:
public class Record: NSManagedObject {
}
Run Code Online (Sandbox Code Playgroud)
记录+ CoreDataProperties:
extension Record {
@nonobjc public class …Run Code Online (Sandbox Code Playgroud)