1

初期データセットをロードするクラスがあると仮定します

//  DataModel.m


#import "DataModel.h"
@implementation DataModel
@synthesize items;

-(id) init{
    self  = [super init];
    if (self)
    {
        [self loadData];
    }
    return self;
}

-(void)loadData
{
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"dataFile" ofType:@"json"];
    NSString *jsonString = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];
    if (!jsonString) {
        NSLog(@"File couldn't be read!");
        return;
    }
    // json was loaded, carry on
    DLog(@"json Data loaded from file");
    NSError *error;
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error];
    if (error){
        DLog(@"ERROR with json: %@",error);
        return;
    }

    items = [json valueForKeyPath:@"items"];

}

appDelegate で(一度)初期化しています

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    appDataModel = [[DataModel alloc] init];
    DLog(@"init %@",appDataModel);

    return YES;
}

このデータセットは、アプリ全体で使用および操作されようとしています。最後に保存され、元のデータ ("dataFile.json") が置き換えられます。

質問: そうするための最善の戦略は何ですか? (このデータセットを多くのビューコントローラーで使用する予定です...)データセットは関連するほど小さいですが、操作/読み取り中に単一の場所とメモリに保持します。

Q2 - appDelegate で本当に (1 回) 初期化する必要がありますか?

4

1 に答える 1

1

シングルトンを使用できます

これは、手動でデータをやり取りすることなく、コードのさまざまな部分間でデータを共有するための非常に強力な方法です。

于 2013-11-07T13:28:39.370 に答える