Я уверен, что об этом уже спрашивали, но мне не повезло найти его. В моем приложении данные загружаются синхронно, что блокирует приложение. Я пробовал асинхронную загрузку, но это не работает с анализатором JSON.
Чтобы обозначить, что приложение не заморожено, просто работаю над загрузкой данных, я надеялся представить пользователю небольшое прозрачное наложение со значком загрузки. Мне было интересно, как это сделать - нужно ли поместить его в другой поток?
Чтобы уточнить, я хочу сделать что-то очень похожее на приложение Netflix для iPad - их загрузочный оверлей идеально подходит для проекта, над которым я работаю.
Редактировать: я добавил некоторый асинхронный код ниже
Сначала я вызываю эту функцию:
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSURLConnection *c = [[NSURLConnection alloc] init];
[self connectionWorks:c didReceiveData:data];
connectionworks
-(void)connectionWorks:(NSURLConnection *)connection didReceiveData:(NSData *)data{
OLWork *newWork;
NSString *jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSDictionary *results = [jsonString JSONValue];
NSArray *rawBooks = [results objectForKey:@"works"];
for (NSDictionary *work in rawBooks) {
newWork = [[OLWork alloc] init];
newWork.title = [work objectForKey:@"title"];
newWork.author = [[[work objectForKey:@"authors"] objectAtIndex:0] objectForKey:@"name"];
newWork.key = [work objectForKey:@"key"];
[self.works setValue:newWork forKey:newWork.title];
}
}