我有以下類別:NSManagedObject被自動設置爲故障
class Profile {
var state:State
var member:Member?
}
class Member: NSManagedObject {
@NSManaged var nickName: String?
@NSManaged var mId: String?
}
問題位於下面的類:
class RegisterMultiTableVContr: UITableViewController {
var profile:Profile?
override func viewDidLoad() {
self.profileService.createEmptyProfile(
{ (profile:Profile) in
self.profile = profile
println("\(self.profile!.member!.description)")
/*
Correct:
Output:
<meetpoll.Member: 0x7fd654175c10> (entity: Member; id: 0xd000000000c80000<x-coredata://21228B23-63B3-4708-8EAC-3302072BA074/Member/p5> ; data: {
mId = nil;
nickName = nil;
})
*/
}, failure: { (error:String) in
// Exception Handling
})
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
println("\(self.profile!.member!.description)")
/*
Set to fault automatically
Output:
<meetpoll.Member: 0x7fd654175c10> (entity: Member; id: 0xd000000000c80000<x-coredata://21228B23-63B3-4708-8EAC-3302072BA074/Member/p50> ;
data: <fault>)
*/
}
}
的prepareForSegue功能僅在viewDidLoad中後調用。我將println函數的輸出寫入了源代碼。 我的問題是,爲什麼對象成員自動設置爲故障?以及如何將成員錯誤再次設置爲false?
包括2014年10月8日
功能創建成員對象像這樣的空簡介:
var member = NSEntityDescription.insertNewObjectForEntityForName("Member", inManagedObjectContext: context) as Member
var profile = Profile(member:member)
var error: NSError? = nil
if context.save(&error) {
return profile
}
包括2014年10月9日
好吧,我見你需要更多的信息,所以我寫了一個簡單的例子,並加載到GitHub https://github.com/qeychon/CoreDataBug/tree/master
這真的是個問題嗎?錯誤只是表示信息不在內存中,但如果你需要的話,它會被提取......有些情況下,你應該關心它,如果你正在做一堆自定義排序或者其他的東西......但通常情況下,您應該使用默認的斷層行爲 – 2014-10-07 20:11:34
故障是正常的,應該是預期的。 – quellish 2014-10-08 06:17:12
謝謝你的回覆。問題是,如果我使用insertNewObjectForEntityForName創建一個對象並保存,那麼我可以在其後不久更改這些屬性。在這個例子中,我發現同一個對象有時會被設置爲錯誤。什麼導致了這種變化? – Qeychon 2014-10-08 08:21:56