كيفية عدم الاستمرار في nsmanagedobjects التي تم استردادها من nsmanagedobjectContext

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

سؤال

أقوم بتحليل ملف XML يحتوي على كتب ، لكل عقدة جديدة أذهب إليها:

Book *book = (Book*)[NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:managedObjectContext];

للحصول على NSManagedObject لكيان كتاب البيانات الأساسي الخاص بي ، أتابع بعد ذلك ملء كائن الكتاب المدار بالبيانات ، وأضفه إلى صفيف ، شطف ، كرر.

عندما انتهيت ، أقدم قائمة الكتب للمستخدم. لم أقم بإعدام الحفظ بعد:

NSError *error;
if (![managedObjectContext save:&error]) {
    NSLog(@"%@", [error domain]);
}

يختار المستخدم الآن أحد الكتب ، هذا الكتاب الذي أود أن يستمر ، ولكن هذا الكتب الأخرى فقط ، كل الكتب الأخرى لا تهمني بعد الآن. كيان الكتاب لا يحتوي على/أو جزء من أي علاقات. إنه مجرد كيان "واحد".

إذا قمت بسحب "حفظ الذراع" ، فسيستمر كل كائن كتاب وسيتعين علي حذف كل شيء ما عدا الكائن المطلوب.

كيف يمكنني الالتفاف على هذا التحدي ، لا يمكنني حقًا العثور على هذا الاستخدام المعين في دليل برمجة البيانات الأساسية ، أي نوع من الأخطاء أيضًا قليلاً ، هل سأعارض أفضل الممارسات هنا؟

شكرا على أي مساعدة.

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

المحلول

نعم أنت تتعارض مع أفضل الممارسات. في حالة الاستخدام هذه ، إذا كنت لا ترغب حقًا في حفظ الكائنات ، فاحرص عليها بتنسيق وسيط وإنشاء كائن بيانات أساسي فقط للاستمرار. ومع ذلك يبدو هذا خطأً تمامًا.

ما هو الضرر في إنقاذ الكتب الأخرى؟ هل سيتم استخدام الوحيد مرة واحدة على الإطلاق؟

بناءً على كمية صغيرة من المعلومات التي قدمتها ، يبدو أن نهجك تجاه المشكلة يجب إعادة النظر فيه.

تحديث

إن إزالة الكائنات غير المحفوظة من السياق لها نعم صغير جدًا نعم ، وهذا هو الحل الأفضل بالنظر إلى المعلمات التي لديك. لقد طرحت الأسئلة الأخرى لمعرفة ما إذا كان هناك حل عام أنظف بدلاً من بناء الأشياء فقط لرميها بعيدًا. يبدو أنك قد كنت بالفعل في هذا المسار.

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