سؤال

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

لدي علاقات محددة تبدو كما يلي:

مشاركة 1: ن تعليق

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

ثم أقوم بتخزين هذا في البيانات الأساسية ، وهذا هو المكان الذي لا أعرف فيه ما إذا كنت أفعل الأشياء بشكل صحيح.

[MTLManagedObjectAdapter managedObjectFromModel:post insertingIntoContext:[self getManagedObjectContext] error:&error];

لذلك أنا أفعل هذا لتخزين كائن المنشور الخاص بي في البيانات الأساسية.يحتوي نموذج البيانات الأساسية على علاقة تسمى" تعليقات ما بعد " وهي علاقة متتالية من شخص إلى آخر.لذلك في منشور الكائن لدي " منشورات لها تعليقات "- > متتالية ، على كائن" تعليق "لدي علاقة فردية مع"إبطال".

أفيك ، البيانات الأساسية يعامل هذا على أنه نسيت.ما أحاول وضعه هو نسموتابليراي على الرغم من ، كما عباءة سوف تأخذ الرعاية من هذا (على الأقل هذا ما نظرة سريعة في مصدرها قال لي).

لسوء الحظ ، عندما أحصل على الكائن مرة أخرى من البيانات الأساسية مع

Post* post = [MTLManagedObjectAdapter modelOfClass:Post.class fromManagedObject:[[self fetchedResultsController] objectAtIndexPath:indexPath] error:nil];

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

Core Data: annotation: repairing missing delete propagation for to-many relationship post_has_comments on object [...]

أنا عالق-ربما أفتقد شيئا ضخما هنا?

تنفذ فئة المنشور الطرق الثابتة التالية:

+ (NSDictionary *)managedObjectKeysByPropertyKey {
return @{
         @"post_id" : @"id",
         @"comments" : @"post_has_comments"
         };
}

+ (NSDictionary *)JSONKeyPathsByPropertyKey {
    return @{
             @"post_id" : @"id",
             };
}

+ (NSDictionary *)relationshipModelClassesByPropertyKey {
    return @{
             @"comments" : IHComment.class
             };
}
هل كانت مفيدة؟

المحلول

من وثائق عباءة:

mantle يجعل من السهل كتابة طبقة نموذجية بسيطة لتطبيق كاكاو أو كاكاو اللمس.

هذا ببساطة عبارة غير مثبتة.بالنظر إلى الإطار، لا أرى أين الأدلة.يجب أن تحصل على الكائنات الخاصة بك، وإدراجها في البيانات الأساسية باستخدام Apis App Apple.

giveacodicetagpre.

هذا كل شيء هناك.

نصائح أخرى

الحل البسيط هو كتابة طريقة ضبط الممتلكات الخاصة بك وإذا كانت القيمة التي يتم تعيينها NSSet ثم قم بتحويله إلى NSMutableArray قبل وضعه مرة أخرى إلى الممتلكات الخاصة بك ivar.

على سبيل المثال:

- (void)setComments:(NSMutableArray *)comments {
    if ([comments isKindOfClass:NSSet.class]) {
        _comments = [NSMutableArray arrayWithArray:[((NSSet *)comments) allObjects]];
    } else {
        _comments = comments;
    }
}

لقد فعلت ذلك بنفسي عدة مرات وهو يعمل مثل السحر!

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