如何循环核心数据的NSSet

时间:2015-10-28 16:10:37

标签: core-data swift2

我有一个用户实体和一个Hobby实体以及一个用户可以拥有许多爱好的to-many关系。我将用户添加到这样的爱好,`@IBAction func addHobby(sender:AnyObject){

    let appDel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let context:NSManagedObjectContext = appDel.managedObjectContext

    var newHobby = NSEntityDescription.insertNewObjectForEntityForName("Hobby", inManagedObjectContext: context) as! Hobby
    newHobby.name = addHobbyTextField.text
    newHobby.user = curUser

    do{

        try context.save()
    } catch{

        print("There was a problem \(error)")
    }

}`

但我想弄清楚如何遍历用户实体对象以查看某个用户有什么爱好。我目前正在使用它,但它不起作用,

@IBAction func printUser(sender: AnyObject) {

    print(curUser!.hobby! as NSSet)

}

我在控制台中得到了这个:

Relationship 'hobby' fault on managed object (0x7fef13674e10) <Core_Data_Demo.Users: 0x7fef13674e10> (entity: Users; id: 0xd000000000040000 <x-coredata://5E62A797-4124-4816-8AC0-32C5E723F830/Users/p1> ; data: {
hobby = "<relationship fault: 0x7fef134515c0 'hobby'>";
password = test;
username = free;

})

任何帮助都很棒,我被困住了。

1 个答案:

答案 0 :(得分:0)

在您访问它之前,这种关系将是一个错误。这就是你在印刷品中看到的。你需要走一段关系,看看里面有什么:

for item in curUser.hobby {
    print(item)
}

这将导致访问关系,这将实现关系,并为您提供一组步行对象。

请注意,即使每个爱好都是错误的,所以您可能想要触摸爱好的属性而不是打印整个对象:

for item in curUser.hobby {
    print(item.name)
}

作为一个例子。

我建议您阅读faulting in Core Data