ios – 无法使用Swift访问CoreData中的一对多关系

ios – 无法使用Swift访问CoreData中的一对多关系,第1张

概述Swift让我最终尝试了IOS开发,但是我遇到了一些与CoreData有关的问题.我没有运气试图访问我的属性,映射到我的一对多关系. 我有这样的一对多关系设置: @objc(Project)class Project: NSManagedObject { @NSManaged var name:String @NSManaged var scribbles : Array<S Swift让我最终尝试了IOS开发,但是我遇到了一些与CoreData有关的问题.我没有运气试图访问我的属性,映射到我的一对多关系.

我有这样的一对多关系设置:

@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中的一对多关系所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1010530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存