0

現在、コアデータを使用するためのカスタムIASKSettingsStoreを実装しています。以下のコードを見ることができます。問題は、値の保存が非常に遅くなることです。たとえば、テキストフィールドに何かを入力すると、IASKAppSettingsViewControllerがすべての変更を保存することはわかっていますが、1つの変更でも非常に遅いことがわかりました。どうすればこれをより速く動作させることができますか?

私は何を監督しますか?前もって感謝します。

これまでのところ、カスタム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 に答える