NSManagedObjectContext问题

时间:2010-08-27 15:15:50

标签: iphone nsmanagedobject nsmanagedobjectcontext

我使用“使用coredata”选项设置我的项目。

XCode显然会自动为我设置所有这些,现在我在app delegate头文件中有这些行:

@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没有下划线。

我的下一个问题是,我想在我的脚本中进一步使用上下文,所以我使用了这些行:

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

现在这不起作用,因为obvs没有@synthesize。但是我需要合成什么?我是用下划线合成还是不合成,我能得到它吗? delegate.managedObjectContextdelegate.managedObjectContext_?还是一点都不?哈..我不太确定我理解所有这些托管对象的东西。

非常感谢。 汤姆

1 个答案:

答案 0 :(得分:0)

下划线只是一种偏好样式,如果你想要你可以合成它或没有它(但如果它与声明的属性不同,你应该在属性声明中用getter=managedObjectContext指定正确的名称,例如< / p>