我正在創建一個遊戲,它由不同的遊戲板組成,這些遊戲板以字典形式存儲在數組中,存儲在json文件中。 json文件非常大,數組中有超過3000個對象,大小約爲23mb。 ,我目前加載該文件的方法是在的appDelegate實現文件像這樣didFinishLaunchingWithOptions:在應用程序啓動時打開大兒子文件,迫使開始時間很長
NSString * filePath =[[NSBundle mainBundle] pathForResource:@"words" ofType:@"json"];
NSError * error;
NSString* fileContents =[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
if(error)
{
NSLog(@"Error reading file: %@",error.localizedDescription);
}
NSDictionary *data = (NSDictionary *)[NSJSONSerialization
JSONObjectWithData:[fileContents dataUsingEncoding:NSUTF8StringEncoding]
options:0 error:NULL];
wordsArray = [[NSMutableArray alloc]initWithArray:[data objectForKey:@"results"]];
然後我可以檢索從應用的任何數組致電:
NSArray *wordsArray = appDelegate.wordsArray;
除了應用程序花費15秒以上加載iPhone 4設備的時間太長以及我瞭解應用程序可能因爲加載時間過長而被拒絕這一事實,它的效果很好。
有人建議可以有更好的方式去了解這一點,
感謝
使用中間的屏幕,看起來像飛濺或加載屏幕,並做好了那裏。對於任何主要任務,您應該避免使用'didFinishLaunchingWithOptions' –
您應該在後臺線程中使用GCD或NSOperation執行較長的任務,以免阻塞UI線程。谷歌「iOS導入大型數據集」。還要看看Core Data以避免在每次應用程序啓動時導入數據。 – ryancrunchi
將各個遊戲板放在不同的文件中。另外JSON實際上不是很好的存儲格式,它實際上是一種傳輸格式。 – zaph