2013-09-28 54 views
1

我環顧四周,看看人們如何使用核心數據添加vs編輯。我遇到了WWDC 2012 - 214視頻以及這篇文章:http://www.cocoanetics.com/2012/07/multi-context-coredata/,這篇文章討論瞭如何在父級使用子級上下文。我的問題是,如果我需要在一個ViewController上創建一個臨時對象,然後將這個臨時對象傳遞給一對viewController,直到我決定是否要保存或不保存,該怎麼辦?我是否需要通過viewControllers將tempContext傳遞給我?或者我只需要將NSManagedObject傳遞給其他viewControllers,並且tempContext是方法的局部變量並不重要。例如:在視圖控制器中保持兒童環境

視圖控制器1的作用:

@property (nonatomic, strong) Route *route; // NSManagedObject subclass 
@property (nonatomic, strong) NSManagedObjectContext *mainMoc; 
- (void)calculateRoute { 
NSMangedObjectContext *temporaryContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; 
temporaryContext.parentContext = self.mainMOC; 
    // calculate the route to possibly save at least one viewController deep 
    self.route = route; 

} 

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
UIViewController *destination = [segue destinationViewController]; 

if ([segue.identifier isEqualToString:@"ShowDistanceViewController"]) { 

    if ([destination respondsToSelector:@selector(setManagedObjectContext:)]) { 
     [destination setValue:self.managedObjectContext forKey:@"managedObjectContext"]; 
    } 
    if ([destination respondsToSelector:@selector(setRoute:)]) { 
     [destination setValue:self.route forKey:@"route"]; 
    } 
} 

現在在destinationViewController,我怎麼扔掉的對象和/或保存在這一點?

回答

0

只是傳遞對象。您可以從對象中訪問上下文(無論是孩子還是主要)

object.managedObjectContext 
+0

因此,上下文消失並且僅在該方法所在的位置創建對象時纔是重要的?我仍然可以傳遞這個對象,並且仍然可以訪問臨時的上下文,即使它不是伊娃或什麼的? – Crystal

+0

是的,確切地說。如上所述,您可以從對象中獲取上下文。 – Mundi

+0

嗯,這似乎並非如此。一旦tempContext失去作用域,即使我有NSManagedObject,managedObjectContext屬性也是null。 – Crystal

相關問題