@class ViewController;
@class RootViewController;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
{
NSManagedObjectModel *managedObjectModel;
NSManagedObjectContext *managedObjectContext;
NSPersistentStoreCoordinator *persistentStoreCoordinator;
Trips *trip;
Garage *car;
}
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) ViewController *viewController;
@property (strong, nonatomic) RootViewController *rootviewcontroller;
@property (nonatomic, retain, readonly) NSManagedObjectModel *managedObjectModel;
@property (nonatomic, retain, readonly) NSManagedObjectContext *managedObjectContext;
@property (nonatomic, retain, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator;
@property (nonatomic, retain) Trips *trip;
@property (nonatomic, retain) Garage *car;
- (NSString *)applicationDocumentsDirectory;
- (void) setCar:(Garage *)Car;
- (void) setTrip:(Trips *)Trip;
- (Trips *) gettrip;
- (Garage *) getcar;
@end
设置和获取的完整方法如下:
- (void) setCar:(Garage *)Car
{
car = Car;
}
- (void) setTrip:(Trips *)Trip
{
trip = Trip;
}
- (Trips *) gettrip
{
return trip;
}
- (Garage *) getcar
{
return car;
}
在我做的第一个视图中:
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
trip = (Trips *)[NSEntityDescription insertNewObjectForEntityForName:@"Trips" inManagedObjectContext:context];
[appDelegate setTrip:trip];
似乎工作正常,即使我做NSLog(@“%@”,[appDelegate gettrip]); ,它向我显示没有问题的对象。但是当我尝试在其他视图中使用[appDelegate gettrip]读取相同的行程时,根本没有工作,实际上使用NSLog它说对象是Garage类型而不是Trips。
我不知道我做错了什么。帮助
答案 0 :(得分:3)
您是否确定在创建项目后保存上下文?如果你不保存它,那么我认为你的新实体没有得到妥善保存。在代码中,您只是在上下文中创建对象,但您必须保存上下文以保持其持久性:
NSError *error = nil;
if(![self.managedObjectContext save:&error]){
//Handle error
}
我希望这有帮助!
答案 1 :(得分:1)
如果NSLog
报告的是其他对象,那么您需要查看创建Garage实体的位置。
也许你有一个简单的复制和粘贴错误?
答案 2 :(得分:0)
在创建要保存的对象时,看起来您实际上并未将对象保存到持久存储中。
试试这个:
if (![managedObjectContext save:&error]) {
NSLog(@"ERROR: %@", [error userInfo]);
} else {
NSLog(@"EVERYTHING SHOULD HAVE SAVED PROPERLY");
}
现在当你在其他视图中读取managedObject时,它应该在那里。
答案 3 :(得分:0)
您的自定义设置器是否存在内存管理问题?
他们需要
吗?- (void)setTrip:(Trip *)Trip {
self.trip = Trip;
}
即。 self.trip =
而不仅仅trip =
使用该属性 - 否则我认为它不会保留您的旅行对象并且会自动释放。然后,当你稍后使用它时,其他东西将在那个记忆位置。
免责声明 - 我仍然没有100%使用ARC,所以我可能错了。值得一试!