我有一个用户实体和一个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;
})
任何帮助都很棒,我被困住了。
答案 0 :(得分:0)
在您访问它之前,这种关系将是一个错误。这就是你在印刷品中看到的。你需要走一段关系,看看里面有什么:
for item in curUser.hobby {
print(item)
}
这将导致访问关系,这将实现关系,并为您提供一组步行对象。
请注意,即使每个爱好都是错误的,所以您可能想要触摸爱好的属性而不是打印整个对象:
for item in curUser.hobby {
print(item.name)
}
作为一个例子。
我建议您阅读faulting in Core Data