كيف أتخلص من "-danagedObjectContext" غير موجود في البروتوكول (البروتوكول)

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

سؤال

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

NewsReaderController.M: 24: تحذير: '-danagedObjectContext' غير موجود في البروتوكول (s)

الرمز هو:

- (void)viewDidLoad {
    [super viewDidLoad];
    //CORE DATA
    if (managedObjectContext == nil) { 
    managedObjectContext = [[[UIApplication sharedApplication] delegate] managedObjectContext]; 
    }
}

تم إعداد ManagedObjectContext لعملية Coredata في App Devate. إطار البيانات الأساسية هو استيراده ويعمل التطبيق مثل السحر.

أي تلميح بالنسبة لي؟ أنا أعمل مع Objective-C لعدة أسابيع الآن ، لكن يبدو أن هناك شيئًا جديدًا يتعلمه كل يوم :)

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

المحلول

حيث -[UIApplication delegate] إرجاع كائن من النوع id<UIApplicationDelegate>, ، المترجم يشكو من لا -managedObjectContext الطريقة موجودة في هذا البروتوكول. إنه موجود ، وأنت تعلم أنه موجود ، حتى تتمكن من حل هذه المشكلة عن طريق الإدلاء بنوع مندوبك المحدد (MyAppDelegate أو أيا كان ما يمكن أن يطلق عليه) ، أو عن طريق الصب id:

 id appDelegate = (id)[[UIApplication sharedApplication] delegate];
 managedObjectContext = [appDelegate managedObjectContext];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top