ios - InAppSettingsKit 和核心数据

标签 ios xcode cocoa-touch core-data inappsettingskit

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

相关文章:

ios - 对象引用未设置为 xamarin ios 应用程序组中对象的实例

ios - 检查 UIAlertController 是否出现在 XCTest 案例中

ios - Fabric 为我的 iOS 应用程序通知我 "STABILITY ALERT",而应用程序运行正常,没有任何崩溃

xcode - 将 Swift 中 HTTP 请求返回的 NSData 转换为字符串

iphone - 我的应用崩溃了,但在iPhone SDK上却没有显示错误Xcode

cocoa-touch - Xcode 6 Cocoa Touch 框架项目找不到公共(public) header

ios - iphone sdk CGAffineTransform 获取物体的旋转角度

ios - 有没有办法为 iOS 设备发送特定于用户的推送通知?

ios - 如何沿贝塞尔路径拖动 UIImageView

ios - 跟踪 iOS 上的设备使用情况