我是IOS Xcode編程的新手。目前我正在研究使用Json數據的應用程序。 該應用程序讀取的Json數據可能非常大。我需要解析數據並將其存儲到核心數據中,以便下次運行應用程序時,只需從該處讀取數據即可節省大量時間。我嘗試過使用dispatch_async
,但UI似乎被凍結,同時數據被保存也導致應用程序崩潰。 我使用ASIHTTPRequest
來讀取和解析Json數據,這些數據工作的很好,但是它必須將數據保存到核心數據並同時將其加載到UITableView
中,這被證明是痛苦的。 如果有人能幫助我,我將非常感激。將Json數據保存到coredata IOS並同時在UITableView中顯示
這裏是我的代碼
NSString *connectionString = [NSString stringWithFormat:@"%@%@?song_id=%@", SERVER_STRING, URL_GET_SONG_LIST, lasSongID];
NSLog(@"COnnection String is:\n%@", connectionString);
NSURL* url = [NSURL URLWithString:connectionString];
//The actual request
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
// Becoming the request delegate
//To get callbacks like requestFinished: or requestFailed:
[request setDelegate:self];
NSLog(@"Fetching Dataaaaaaaa from %@",url);
// Fire off the request
[request startAsynchronous];
-(void) requestFinished: (ASIHTTPRequest *) request
{
NSString *theJSON = [request responseString];
NSLog(@"Dataaaaaaaa,%@",theJSON);
NSDictionary *responseDictionary = [theJSON JSONValue];
if ([[responseDictionary valueForKey:@"Message"] isKindOfClass:[NSArray class]])
{
[songsArray addObjectsFromArray:[responseDictionary valueForKey:@"Message"]];
if (songsArray.count > 0)
{
dispatch_async (bgQueue, ^(void){
[self saveDownloadedSongs];
});
}
}
}
saveDownloadedSongs - 一些驗證後>保存JSON來我的核心數據