Swift让我最终尝试了IOS开发,但是我遇到了一些与CoreData有关的问题.我没有运气试图访问我的属性,映射到我的一对多关系. 我有这样的一对多关系设置: @objc(Project)class Project: NSManagedObj
我有这样的一对多关系设置:
@objc(Project) class Project: NSManagedObject { @NSManaged var name:String @NSManaged var scribbles : Array<Scribble> } @objc(Scribble) class Scribble: NSManagedObject { @NSManaged var notes:String @NSManaged var project:Project }
我取这样的数据:
let request = NSFetchRequest(entityName: "Projects"); request.returnsObjectsAsFaults = false; request.includesSubentities = true; var results:NSArray = context.executeFetchRequest(request, error: nil); for project in results { let thisProject:Project = project as Project; projects.append(thisProject); }
但每当我尝试使用for..in迭代一个项目的涂鸦时,我得到这个例外:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[Scribble count]: unrecognized selector sent to instance
当我在我的项目对象上打印它看起来我得到了回报,我只是不知道该怎么做.
<Project: 0xb48e010> (entity: Projects; id: 0xb48d340 <x-coredata://CDEFAC19-4D9E-426D-B0CC-EFFEE9053707/Projects/p3> ; data: { name = Larry; scribbles = "0xb48e7b0 <x-coredata://CDEFAC19-4D9E-426D-B0CC-EFFEE9053707/Scribbles/p3>";
})
从被抛出的异常开始,看起来你正试图迭代一个集合,而是project.scribbles返回一个集合,它返回一个Scribble实例.这让我觉得你的关系在数据建模器中被设置为“一个”.确保您已将关系设置为“to many”.您可以通过选择关系来实现,并且数据模型检查器中将有一个名为type的选项 – 默认情况下它设置为“to one”.