У меня есть веб-приложение и вы хотите загрузить данные из веб-службы в основные данные для отображения в моем приложении IOS. Конечная цель состоит в том, чтобы иметь возможность работать с приложением iOS вне очереди и позже синхронизировать с веб-сайтом (например, Facebook), но пока я просто пытаюсь сохранить фид веб-сервиса для основных данных и отображения. Хотя я понимаю, что есть библиотеки, которые помогут, я хочу сделать это изначально для первой итерации. Использую http://api.openweathermap.org/data/2.5/weather?q=London,uk как json feed.IOS/Xcode: сохранить привязку веб-сервиса к основным данным
Является следующим правильным путем?
Создание модели данных в IOS с одинаковыми именами атрибутов, как имена переменных в ответ Json
В основном заголовке вида контроллера (vc.h) добавить NSMutable Массива свойств для хранения данных и свойства отдушины для JSon полех проводной раскадровки
@property (nonatomic, strong) NSMutableArray *weatherData;
@property (weak, nonatomic) IBOutlet UILabel *temp;
@property (weak, nonatomic) IBOutlet UILabel *humidity;
в источнике VC, обобщать свойства и viewDidLoad использовать NSSession для загрузки данных
- (void)viewDidLoad {
[super viewDidLoad];
//1
NSString *dataUrl = [NSString stringWithFormat:@"http://api.openweathermap.org/data/2.5/weather?q=London,uk];
NSURL *url = [NSURL URLWithString:dataUrl];
// 2
NSURLSessionDataTask *downloadTask = [[NSURLSession sharedSession]
dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// could add error checking here.
// 3
[downloadTask setTaskDescription:@"weatherDownload"];
[downloadTask resume];
// 4: Handle response here
[self processResponseUsingData:data];
}];
}
#pragma mark - Private
// Helper method
- (void)processResponseUsingData:(NSData*)data {
NSError *parseJsonError = nil;
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingAllowFragments error:&parseJsonError];
if (!parseJsonError) {
NSLog(@"json data = %@", jsonDict);
dispatch_async(dispatch_get_main_queue(), ^{
self.temp.text = jsonDict[@“temp”];
self.humidity.text = jsonDict[@“humidity”];
});
}
}
// Сохранить объект ядро Data..I не знает, как это сделать
// Создать метод с использованием контроллера NSFetchedResults для извлечения данных из основных данных и отображения в виде таблицы
Спасибо за любые комментарии предложений. Я искал по всему миру для хорошего начала, чтобы закончить способ сделать это, не может найти хороший учебник или простой отчет о шагах, которые нужно предпринять. Все, что я нашел, либо очень простое, либо много зависимостей от библиотек, и поэтому очень сложно.
'// Сохранить объект в основных данных', это делается путем создания экземпляров вашего основного объекта данных и последующего вызова операции сохранения в контексте управляемого объекта. Однако, возможно, вам нужно быть осторожным в отношении повторяющихся записей. Я вижу, что библиотеки, такие как Overcoat, Mantle, имеют уникальное свойство ключа, которое помогает библиотеке знать, какое свойство JSON является уникальным ключом (обычно идентификатором объекта). – Zhang