كيف أتخلص من "-danagedObjectContext" غير موجود في البروتوكول (البروتوكول)
-
29-09-2019 - |
سؤال
يعمل تطبيقي على جهاز 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];