سؤال

لقد قمت بإعداد مشروعي بمجموعة خيار "استخدام 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 ومع ذلك @propertyS ليس لها السطح.

سؤالي التالي هو ، أريد استخدام السياق بشكل أكبر في البرنامج النصي الخاص بي ، لذلك استخدمت هذه السطور:

GFree2AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
context = delegate.managedObjectContext;

الآن لن ينجح هذا لأن Obvs لا يوجد synthesize. لكن ماذا أحتاج إلى توليفه؟ هل أقوم بتوليف مع السطح السفلي ، أو بدونه ، وهل أحصل عليه؟ delegate.managedObjectContext أو delegate.managedObjectContext_؟ أو لا على الاطلاق؟ ها .. لست متأكدًا من أنني أفهم كل هذه الأشياء المدارة.

شكرًا جزيلاً. توم

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

المحلول

إن السطح السفلي هو مجرد نمط تفضيل ، إذا كنت تريد أن تتمكن من تجميعها أو بدونها (ولكن إذا كان مختلفًا عن الخاصية المعلنة ، فيجب عليك تحديد الاسم الصحيح في إعلان العقار مع getter=managedObjectContext فمثلا

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