我正在学习核心数据,同时也在内化Swift。我正在使用Nick Smith的"Xcode Primer——Starting Core Data",并首先在Objective-C中做每个练习,就像在书中一样,然后在Swift中做。现在,我正在Mavericks 10.9.5上使用Xcode 6.1 beta 2,目前,我正在阅读本书的第5章,该章在OS X上运行,因此默认为XML存储。Objective-C版本一直都很好,但在Swift中,当我进入关于排序的子章节时,我失败了,使用
[<NSXMLDocumentMapNode ...> valueForUndefinedKey:]: this class is not
key value coding-compliant for the key price.
("价格"是正在排序的属性的正确名称。)
我已经多次删除并重新键入整个项目;不管问题出在哪里,这都不是一个简单的打字错误。我知道类必须从实体名称更改为项目名称体名称,如果做得不对,项目将在早期阶段失败,所以我知道事实并非如此。我所有的类都被标记为@objc,所以不是这样。
突破!我发现这个修复是修复另一个表面上疯狂的错误的副作用。我不得不更改代码:
let sort2 = NSSortDescriptor(key: "price", ascending: true)
至:
let sort2 = NSSortDescriptor(key: "price" as NSString, ascending: true)
进入下一章!