2015-02-10 16 views
0

У меня есть веб-приложение и вы хотите загрузить данные из веб-службы в основные данные для отображения в моем приложении 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 для извлечения данных из основных данных и отображения в виде таблицы

Спасибо за любые комментарии предложений. Я искал по всему миру для хорошего начала, чтобы закончить способ сделать это, не может найти хороший учебник или простой отчет о шагах, которые нужно предпринять. Все, что я нашел, либо очень простое, либо много зависимостей от библиотек, и поэтому очень сложно.

+0

'// Сохранить объект в основных данных', это делается путем создания экземпляров вашего основного объекта данных и последующего вызова операции сохранения в контексте управляемого объекта. Однако, возможно, вам нужно быть осторожным в отношении повторяющихся записей. Я вижу, что библиотеки, такие как Overcoat, Mantle, имеют уникальное свойство ключа, которое помогает библиотеке знать, какое свойство JSON является уникальным ключом (обычно идентификатором объекта). – Zhang

ответ

0

Другой отличный способ это сделать, как описано в этой статье: Pull Website Data Easily iOS

Я не знаю, если это именно то, что вы ищете, но вы можете позже сохранить массив в основных данных, или просто отобразите его как есть.

Смежные вопросы