我最近几周在Mac和iOS上使用Swift和CoreData。
我使用的模型最初是在iOS项目中创建的。我已经成功创建了Objective-C NSManagedObject类并且插入,获取记录工作完美。
然后,我将模型文件从iOS项目拖放到Mac(OS X)项目。我检查了所有属性,似乎他复制得很好。我再次创建了Objective-C NSManagedObject类,xCode完成了一个桥接,这很好。我甚至可以毫无问题地插入新实体,但是有了提取 - 有问题:
我正在使用以下代码将记录提取到数组中:
var recipesArray: Recipe[] {
get {
if !_recipesArray {
var request = NSFetchRequest(entityName: "Recipe")
let sortDescriptor = NSSortDescriptor(key: "title", ascending: true)
request.sortDescriptors = [sortDescriptor]
var fetchResults = appDelegate.managedObjectContext?.executeFetchRequest(request, error: nil)
if (!fetchResults) {
println("fetch error")
}
println(fetchResults)
_recipesArray = fetchResults as? Recipe[]
}
return _recipesArray!;
}
}
这与我在iOS项目中使用的代码相同,但不起作用。当我使用调试器工具提示或打印时,我得到正确的记录数,但对于每个记录(实体),我得到以下错误:
[0] = <error: use of undeclared identifier 'cocoarr'
error: 1 errors parsing expression
我不确定我做错了什么。也许我错过了一些重要的步骤,或者我需要考虑一些限制。
我想通知我已经检查了SQLite客户端中的两个.sqlite文件,并且iOS和OS X文件之间存在一些差异。试图在AppDelegate文件中通过xCode生成的CoreData代码,并且在创建商店时似乎使用了相同的参数。
非常感谢您的帮助。