/ / Достъп до managedObjectContext в initWithCoder: - какао, основни данни, плъзгане и пускане, nsmanagedobject, nsmanagedobjectcontext

Достъп до managedObjectContext в initWithCoder: - какао, основни данни, плъзгане и пускане, nsmanagedobject, nsmanagedobjectcontext

Опитвам се да приложа операции за плъзгане и пускане NSManagedObject подкласове, наред с други, използвайки информацията под "плъзгане и пускане" в документацията на Apple https://developer.apple.com/library/mac/documentation/cocoa/conceptual/coredata/Articles/cdUsingMOs.html#//apple_ref/doc/uid/TP40001803-CJBDBHCB.

Имам подклас NSManagedObject, наречен Person,и искате да използвате неговия managedObjectID (кодиран с URI), за да извършите операция за свързване. Документите посочват следния метод за възстановяване на моя обект Person от UID-кодиран moID на картона:

NSURL *moURL = // get it from the pasteboard ...
NSManagedObjectID *moID = [[managedObjectContext persistentStoreCoordinator]
managedObjectIDForURIRepresentation:moURL];
// assume moID non-nil...
NSManagedObject *mo = [managedObjectContext objectWithID:moID];

Как бих получил достъп до managedObjectContext? По времето, когато стартирам този код (initWithCoder:), стойността е все още нула.

Отговори:

0 за отговор № 1

Помислете за контекста си на управляван обект като четка. Връзката, която сте публикували, го обяснява като:

Простото модифициране на управляван обект не причинявапромените, които трябва да бъдат запазени в магазин. Контекстът на управлявания обект действа като драскотина. Можете да създавате и регистрирате управлявани обекти с него, да правите промени в обектите и да отмените и повторите промените, както желаете. Ако правите промени в управлявани обекти, свързани с даден контекст, тези промени остават локални за този контекст, докато не извършите промените, като изпратите на контекста съобщение save:

Така че можете да използвате същия контекст, който използвате на други места. Нека приемем, че създавате един контекст в appDelegate с помощта на Apple Core Data Templates. Този контекст става managedObjectContext във вашия код. Вие работите с mo обект и в края ти save: контекста или правите a rollback.