2013-02-09 88 views
0

我目前正在实现一个定制的IASKSettingsStore以使用核心数据。你可以看到下面的代码。问题是值的存储变得非常缓慢。例如,当我在文本字段中键入内容时,我知道IASKAppSettingsViewController存储了每一个变化,但我发现即使是一个单独的变化也非常缓慢。我怎样才能使这项工作更快?InAppSettingsKit和核心数据

我该怎么监督?提前致谢。

到目前为止定制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 

回答

1

好了,终于我想通了,自己哪里出了问题。与InAppSettingsKit无关。我将InAppSettingsKit控制器作为带有NSFetchedResultsController的视图控制器的模式视图控制器提供。因此,我在设置控制器中所做的每一项更改都会将调用发送给NSFetchedResultsController的委托。结果,整个表格视图被不必要地重新加载。我使用模态视图控制器的子管理对象对象上下文来解决它。我发现这个主题非常有用的文章:http://www.cocoanetics.com/2012/07/multi-context-coredata/

而我上面发布的核心数据的自定义IASKSettingsStore工作到目前为止效果很好,所以你可以实现它到你自己的项目,如果你想。

+0

很高兴知道,谢谢。我很乐意接受Github上的pull请求,如果你打包(并在Readme中记录)你的改变! – 2013-02-11 08:54:23