0

我目前正在实施一个自定义 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
4

1 回答 1

1

好吧,我终于弄清楚了问题出在哪里。与 InAppSettingsKit 无关。我将 InAppSettingsKit 控制器作为模式视图控制器从具有 NSFetchedResultsController 的视图控制器呈现。因此,我在设置控制器中所做的每一次更改都会调用 NSFetchedResultsController 的委托。结果,整个表视图被不必要地重新加载。我使用模态视图控制器的子托管对象对象上下文解决了它。我发现了一篇关于该主题的非常有用的文章:http: //www.cocoanetics.com/2012/07/multi-context-coredata/

到目前为止,我在上面发布的用于 Core Data 的自定义 IASKSettingsStore 运行良好,因此您可以根据需要将其实现到您自己的项目中。

于 2013-02-09T13:29:03.783 回答