(一)界面功能
界面A从实体Admin里搜索到一个实例,并在tableView中逐行打印他的值。
界面B完成后,将修改界面A中那个Admin实例的值。
(二)问题描述
我从界面Apush到界面B,在界面B中完成相关操作后,pop回界面A后,界面A对应本来应被修改的值没有被修改,显示的仍然是旧的值。但我重启simulator再打开界面A,会发现可以成功显示修改后的值。
(三)代码
0、声明
@property(nonatomic, strong, readwrite)Admin * admin;
@property(nonatomic, strong, readwrite)Book * book;
@property(nonatomic, strong, readwrite)NSURL * modelURL;
@property(nonatomic, strong, readwrite)NSManagedObjectModel * mom;
@property(nonatomic, strong, readwrite)NSPersistentStoreCoordinator * psc;
@property(nonatomic, strong, readwrite)NSURL * path;
@property(nonatomic, strong, readwrite)NSManagedObjectContext * moc;
@property(nonatomic, strong, readwrite)NSFetchRequest * request;//发送请求
@property(nonatomic, strong, readwrite)NSArray * array;
//基本都用懒加载到方式做好准备了。下面的adminID只是一个页面间传的字符串,记载登陆时的账号。
1、在A里找到那个Admin实例
- (void)goInit{
    _request = [NSFetchRequest fetchRequestWithEntityName:@"Admin"];//设置请求的实体
    NSPredicate * predicate = [NSPredicate predicateWithFormat:@"name LIKE %@",_adminID];
    _request.predicate = predicate;//设置请求的条件
    _array = [_moc executeFetchRequest:_request error:nil];
    for(Admin * t in _array){
        _admin = t;
    }
}
//这个for写得很蠢,因为我不知道如何不用appdelagte而将上下文存入对象中。只能放在数组中再拿出来。
2、在B中修改那个Admin实例
- (void)goAdd{
    _request = [NSFetchRequest fetchRequestWithEntityName:@"Admin"];//设置请求的实体
    NSPredicate * predicate = [NSPredicate predicateWithFormat:@"name LIKE %@",_adminID];
    _request.predicate = predicate;//设置请求的条件
    _array = [_moc executeFetchRequest:_request error:nil];
    int i;
    for(Admin * t in _array){
        i = t.inBook;
        i++;
        t.inBook++;
        _admin = t;
    }
    NSError * error = nil;
    if(![_moc save:&error]){
        NSLog(@"ERROR:%@",error);
    }
    //NSLog(@"DATA:%d",_admin.inBook);
}