طبقات متعددة من وزارة التجارة يدمج...كوريداتا قدامى المحاربين ، ما رأيك ؟

StackOverflow https://stackoverflow.com/questions/3453550

  •  27-09-2019
  •  | 
  •  

سؤال

السؤال الأصلي قد تم الرد عليها.تحديث عناوين ذات الصلة سؤال في التعليقات.

الوظيفة الأصلية:

أنا باستخدام MOC حفظ الطريقة المستخدمة في أبل CoreDataBooks.ومع ذلك ، يبدو لي أن استخدام طبقتين من وزارة التجارة دمج (ثلاثة مخاط فيها 3 يدمج مع 2 ثم 2 يدمج مع 1).

أولا لدي tableview (ClassList) قائمة الفصول المدرسية.اختيار فئة يدفع 2-صف tableview (AddClass).في AddClass, الصف الأول يسمح للمستخدم لتحرير لقب فئة.اختيار الصف الثاني يدفع tableview (ClassRoster) الذي يعرض قائمة طالب هذا الصف.وأخيرا اختيار الطالب يدفع على آخر 2-صف tableview (AddStudent) حيث يمكن للمستخدم تحرير الطالب اسم المستخدم.

يمكنني أن أضيف وإنقاذ الطبقات بنجاح باستخدام ثنائي وزارة التجارة دمج طريقة (managedObjectContext و addingManagedObjectContext كما يعمل CoreDataBooks).سأتصل قاعدة "وزارة التجارة" في أول عرض "MOC1" واستدعاء "المسودة" وزارة التجارة "MOC2".

MOC2 مؤقتا محلات التغييرات التي أجريت على فئة الكائن.هذه التغييرات يمكن أن ثم تكون إما حفظ أو إلغاء إرسال -didFinishWithSave:(BOOL) إلى مندوب.إن حفظ التغييرات التي تم إجراؤها في MOC2 يتم دمجها مع MOC1.أن الدمج يعمل تماما.

التعامل مع التغييرات التي تم إجراؤها على الطالب الكائنات أين أنا ذاهب خاطئ.اعتقدت أنني يمكن أن توظف MOC3 كما المسودة تغييرات الطالب الأشياء التي من شأنها أن تندمج مع MOC2 (عندما أنقذ الطالب كائن).MOC2 بدوره يمكن أن يتم حفظها مع MOC1 عندما أنقذ فئة الكائن.

لكني واجهت أخطاء مع توفير MOC3 وإضافة الطالب الكائنات إلى كائنات فئة لأنهم في سياقات مختلفة.أنا يمكن أن الرمز البريدي ، ولكن أولا أريد أن أسأل السؤال الأكبر: أنا ذاهب عن كل هذا بطريقة خاطئة ؟

تحديث:

السيدزارا ينصح باستخدام initWithEntity:insertIntoManagedObjectContext: ووضع وزارة التجارة إلى النيل, وبالتالي خلق كائن مؤقت التي يمكن في وقت لاحق لها وزارة الثقافة مجموعة وحفظها.

بعد نصيحته ، أنا أحاول إدراج التعليمات البرمجية التالية:

    NSManagedObjectModel *managedObjectModel - [[managedObjectContext persistentStoreCoordinator] managedObjectModel];
    NSEntityDescription *entity = [[managedObjectModel entitiesByName] objectForKey:@"MyClass"];
    MyClass *newClass = [[MyClass alloc] initWithEntity:entity insertIntoManagedObjectContext:nil];

أنا واجهت خطأ, ولكن لست متأكدا من أنه هو ذات الصلة إلى هذا القانون حتى الآن.أنا سوف تصحيح و بعد ما أجد.

هل كانت مفيدة؟

المحلول

نعم.أنت لا تحتاج إلى استخدام أكثر من واحد NSManagedObjectContext.هذا المثال هو فقير واحد.في هذه الحالة يجب أن يكون استخدام واحد السياق أنه سيتم إزالة كافة القضايا الخاصة بك.

إذا كنت تريد مؤقت كيان إنشاء مع النيل NSManagedObjectContext.عندما تريد حفظه استدعاء -setManagedObjectContext: ثم حفظ ذلك NSManagedObjectContext.

المرة الوحيدة التي كنت واقعيا ترغب في استخدام أكثر من واحد NSManagedObjectContext عندما كنت في مجتمع متعدد الخيوط الوضع.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top