我目前正在实现一个自定义 IASKSettingsStore 以使用核心数据。您可以看到下面的代码。问题是值的存储变得非常慢。例如,当我在文本字段中输入某些内容时,我知道 IASKAppSettingsViewController 会存储每个更改,但我发现即使是一个更改的存储速度也非常慢。我怎样才能让这项工作更快?
我要监督什么?提前致谢。
到目前为止,自定义 IASKSettingsStore 如下所示:
@implementation GPSettingsStoreCoreData
@synthesize managedObject = _managedObject;
- (id)initWithManagedObject:(NSManagedObject *)managedObject {
self = [super init];
if( self ) {
_managedObject = managedObject;
}
return self;
}
- (id)init
{
if (self = [super init]) {
_managedObject = nil;
}
return self;
}
- (void)setBool:(BOOL)value forKey:(NSString*)key {
[self.managedObject setValue:[NSNumber numberWithBool:value] forKey:key];
}
- (void)setFloat:(float)value forKey:(NSString*)key {
[self.managedObject setValue:[NSNumber numberWithFloat:value] forKey:key];
}
- (void)setDouble:(double)value forKey:(NSString*)key {
[self.managedObject setValue:[NSNumber numberWithDouble:value] forKey:key];
}
- (void)setInteger:(int)value forKey:(NSString*)key {
[self.managedObject setValue:[NSNumber numberWithInt:value] forKey:key];
}
- (void)setObject:(id)value forKey:(NSString*)key {
[self.managedObject setValue:value forKey:key];
}
- (BOOL)boolForKey:(NSString*)key {
return [[self.managedObject valueForKey:key] boolValue];
}
- (float)floatForKey:(NSString*)key {
return [[self.managedObject valueForKey:key] floatValue];
}
- (double)doubleForKey:(NSString*)key {
return [[self.managedObject valueForKey:key] doubleValue];
}
- (int)integerForKey:(NSString*)key {
return [[self.managedObject valueForKey:key] intValue];
}
- (id)objectForKey:(NSString*)key {
return [self.managedObject valueForKey:key];
}
@end
最佳答案
好吧,我终于弄清楚问题出在哪里了。与 InAppSettingsKit 无关。我将 InAppSettingsKit Controller 作为带有 NSFetchedResultsController 的 View Controller 的模态视图 Controller 。因此,我在设置 Controller 中所做的每个更改都会发送对 NSFetchedResultsController 的委托(delegate)的调用。结果,整个 TableView 被不必要地重新加载。我使用模态视图 Controller 的子托管对象对象上下文解决了这个问题。我发现了一篇关于该主题的非常有用的文章:http://www.cocoanetics.com/2012/07/multi-context-coredata/
到目前为止,我上面发布的用于核心数据的自定义 IASKSettingsStore 运行得很好,因此如果需要,您可以将其实现到您自己的项目中。
关于ios - InAppSettingsKit 和核心数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14783629/