我已经使用“使用 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_
?或者根本没有?哈.. 我不太确定我是否了解所有这些托管对象的内容。
非常感谢。汤姆