Ios 将数据加载到类中并使用它的策略
假设我有一个加载初始数据集的类Ios 将数据加载到类中并使用它的策略,ios,objective-c,class,subclass,appdelegate,Ios,Objective C,Class,Subclass,Appdelegate,假设我有一个加载初始数据集的类 // DataModel.m #import "DataModel.h" @implementation DataModel @synthesize items; -(id) init{ self = [super init]; if (self) { [self loadData]; } return self; } -(void)loadData { NSString *filePat
// 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”)
问题:
这样做的最佳策略是什么?(将在许多ViewController中使用此数据集…)
数据集相对较小,但我宁愿在操作/读取数据时将其保存在单个位置和内存中
问题2-我真的应该在appDelegate中初始化它(一次)?您可以使用
这是一种非常强大的方式,可以在代码的不同部分之间共享数据,而无需手动传递数据
你可以使用
这是一种非常强大的方式,可以在代码的不同部分之间共享数据,而无需手动传递数据
谢谢,Q2-我真的应该在appDelegate中初始化它(一次)吗?如果你遵循链接,你不需要在任何地方初始化它。当第一次调用sharedInstance时,对象将被初始化,以下sharedInstance调用将返回已初始化的对象。谢谢,Q2-我真的应该在appDelegate中初始化它(一次)吗?如果您遵循链接,您不需要在任何地方初始化它。当第一次调用sharedInstance时,对象将被初始化,以下sharedInstance调用将返回已初始化的对象。