初期データセットをロードするクラスがあると仮定します
// 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 回) 初期化する必要がありますか?