我有这样的一对多关系设置:
@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”.
总结以上是内存溢出为你收集整理的ios – 无法使用Swift访问CoreData中的一对多关系全部内容,希望文章能够帮你解决ios – 无法使用Swift访问CoreData中的一对多关系所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)