У меня есть веб-сервис для извлечения данных в форме JSON
. Я вызываю эту службу каждый раз, когда приложение запускается (внутри метода appDidFinishLaunching
) и сохраняет его в локальном файле. Я хочу вызвать службу только в первый раз, когда приложение запускается, и со следующего раза я просто хотел использовать файл, в котором я сохранил данные JSON
.как получить доступ к любому методу только один раз при запуске приложения в первый раз
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
//live json data url
NSURL *url = [NSURL URLWithString:@"My Url"];
NSData *urlData = [NSData dataWithContentsOfURL:url];
//attempt to download live data
if (urlData)
{
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"data.json"];
[urlData writeToFile:filePath atomically:YES];
}
//copy data from initial package into the applications Documents folder
else
{
//file to write to
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"data.json"];
//file to copy from
NSString *json = [ [NSBundle mainBundle] pathForResource:@"data" ofType:@"json" inDirectory:@"html/data" ];
NSData *jsonData = [NSData dataWithContentsOfFile:json options:kNilOptions error:nil];
//write file to device
[jsonData writeToFile:filePath atomically:YES];
}
NSError *jsonError = nil;
NSString *jsonFilePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"data.json"];
NSData *jsonData = [NSData dataWithContentsOfFile:jsonFilePath options:kNilOptions error:&jsonError ];
NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&jsonError];
self.serverResponseArray = jsonArray;
NSLog(@"%@",self.serverResponseArray);
К этому коду я пишу JSON
ответ на локальный файл и хранения в массиве, чтобы использовать его во всем приложении.
Вы могли бы просто проверить наличие файла перед попыткой загрузить данные нет? – talnicolas
Как это проверить. ? – Zac24
Первый раз, когда вы загрузите json и сохраните его в локальном файле с определенным именем (если я хорошо понимаю). При следующем запуске приложения, если файл с таким именем существует, вам не нужно загружать json, просто используйте этот файл. Но просто из любопытства разве вы не хотите, чтобы данные обновлялись каждый раз при запуске приложения? – talnicolas