【发布时间】:2014-08-08 19:45:33
【问题描述】:
所以我在我的应用程序中构建了一个隐藏功能。在我的设置菜单中,我有一个UISwitch,它应该允许用户隐藏自己。我已经创建了UISwitch 的 IBAction,如下所示:
-(IBAction)hideUserToggle:(id)sender {
AppDelegate *newAppDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [newAppDelegate managedObjectContext];
NSManagedObject *newOwner;
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"LoggedInUser" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDesc];
NSManagedObject *matches = nil;
NSError *error;
NSArray *objects = [context executeFetchRequest:request error:&error];
newOwner = [NSEntityDescription insertNewObjectForEntityForName:@"LoggedInUser" inManagedObjectContext:context];
if (_hideUser.on) {
if ([objects count] == 0) {
NSLog(@"%@",[error localizedDescription]);
} else {
matches = objects[0];
[newOwner setValue:@"userHidden" forKeyPath:@"isHidden"];
NSLog(@"%@",[matches valueForKeyPath:@"isHidden"]);
}
} else {
if([objects count] == 0) {
NSLog(@"%@",[error localizedDescription]);
} else {
matches = objects[0];
[newOwner setValue:@"userNotHidden" forKeyPath:@"isHidden"];
NSLog(@"%@",[matches valueForKeyPath:@"isHidden"]);
}
}
}
这应该设置我用来确定一个人是否隐藏的核心数据字符串的值,我稍后在我的代码中将其用作加载数据的条件。但是,当我测试此功能时,当用户拨动开关时,它似乎并没有更新持久数据存储(核心数据)。我到处环顾四周,发现这里提到更新核心数据存在延迟 - > Why does IOS delay when saving core data via a UIManagedDocument,但它似乎没有为我的问题提供答案。
我希望能够翻转开关并保存该值,以便当用户滑动到另一个视图控制器时,它会立即意识到用户已进入“隐藏”或离线状态,因此它不会显示某些信息。
【问题讨论】:
标签: objective-c core-data ios7