Я написал приложение, которое загружает информацию из списка, который лежит на моем сервере (я надеюсь, что это нормально с Apple :-)). Приложение работает нормально по WiFi, но при использовании его в 3G время загрузки немного велико. Поэтому я хотел бы оптимизировать загрузку моего plist.
Я полагаю, что мог бы сохранить копию plist на устройстве и только проверить, изменился ли удаленный plist, и если это так, загрузить его. Я не уверен, будет ли это меньше данных и, следовательно, минимизирует время загрузки, и я даже не уверен, как это будет записано в коде.
Кто-нибудь знает, как я могу минимизировать время загрузки и, возможно, опубликовать пример кода?
Прямо сейчас я использую эти две строки, чтобы загрузить список и сохранить его. FETCH_URL
, очевидно, мой URL.
NSURL *url = [NSURL URLWithString:FETCH_URL];
NSMutableArray *tmpArray = [[NSMutableArray alloc] initWithContentsOfURL:url];
РЕДАКТИРОВАТЬ: Я пытаюсь использовать NSURLConnection, как предлагает Томас Клейсон, но я не могу понять, как преобразовать данные в NSMutableArray.
Это, по моему мнению, DidLoad:
NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:FETCH_URL] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0];
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
NSLog(@"Connection open.");
}
else {
NSLog(@"Failed connecting.");
}
Тогда у меня есть эти два метода, чтобы проверить, есть ли какие-либо новые данные, и проверить, все ли данные были собраны.
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
NSLog(@"More data.");
[receivedData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"Connection successful.");
}