قضايا nsmanagedObjectContext
-
01-10-2019 - |
سؤال
لقد قمت بإعداد مشروعي بمجموعة خيار "استخدام Coredata".
من الواضح أن Xcode قم بإعداد كل هذا بالنسبة لي تلقائيًا ، والآن لدي هذه الخطوط في ملف رأس مندوب التطبيق:
@interface GFree2AppDelegate : NSObject <UIApplicationDelegate> {
UIWindow *window;
GFree2ViewController *viewController;
UINavigationController *navController;
NSManagedObjectContext *managedObjectContext_;
NSManagedObjectModel *managedObjectModel_;
NSPersistentStoreCoordinator *persistentStoreCoordinator_;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet GFree2ViewController *viewController;
@property (nonatomic, retain) IBOutlet UINavigationController *navController;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
- (NSString *)applicationDocumentsDirectory;
@end
سؤالي الأول هو ، لماذا لدى المؤشرات الأولية للكائن المدار والأشياء الساحرة؟ هذه هي الطريقة التي يتم بها استخدامها في ملف .M ومع ذلك @property
S ليس لها السطح.
سؤالي التالي هو ، أريد استخدام السياق بشكل أكبر في البرنامج النصي الخاص بي ، لذلك استخدمت هذه السطور:
GFree2AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
context = delegate.managedObjectContext;
الآن لن ينجح هذا لأن Obvs لا يوجد synthesize. لكن ماذا أحتاج إلى توليفه؟ هل أقوم بتوليف مع السطح السفلي ، أو بدونه ، وهل أحصل عليه؟ delegate.managedObjectContext
أو delegate.managedObjectContext_
؟ أو لا على الاطلاق؟ ها .. لست متأكدًا من أنني أفهم كل هذه الأشياء المدارة.
شكرًا جزيلاً. توم
المحلول
إن السطح السفلي هو مجرد نمط تفضيل ، إذا كنت تريد أن تتمكن من تجميعها أو بدونها (ولكن إذا كان مختلفًا عن الخاصية المعلنة ، فيجب عليك تحديد الاسم الصحيح في إعلان العقار مع getter=managedObjectContext
فمثلا