当前位置 : 主页 > 手机开发 > ios >

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

来源:互联网 收集:自由互联 发布时间:2021-06-11
Swift让我最终尝试了IOS开发,但是我遇到了一些与CoreData有关的问题.我没有运气试图访问我的属性,映射到我的一对多关系. 我有这样的一对多关系设置: @objc(Project)class Project: NSManagedObj
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”.

网友评论