我是 IOS Xcode 编程的新手。目前我正在开发一个使用 Json 数据的应用程序。该应用程序读取可能非常大的 Json 数据。我需要解析数据并将其存储到 Core Data 中,这样当应用程序下次运行时,它可以简单地从那里读取数据,从而节省大量时间。我尝试过使用dispatch_async
,但 UI 似乎在保存数据时被冻结,这也导致应用程序崩溃。我曾经ASIHTTPRequest
读取和解析 Json 数据,它工作得很好,但它是我必须将数据保存到核心数据并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 保存到我的核心数据中