Хранение данных из ObjectiveFlickr в синглтоне на iPhone - PullRequest
0 голосов
/ 28 мая 2011

Цель состоит в том, чтобы иметь класс одноэлементного контроллера данных с именем FetchData.h / .m, который извлекает данные с помощью ObjectiveFlickr (https://github.com/lukhnos/objectiveflickr).

FetchData.m захватывает данные с этим:

OFFlickrAPIContext *context = [[OFFlickrAPIContext alloc] initWithAPIKey:YOUR_KEY sharedSecret:YOUR_SHARED_SECRET];
OFFlickrAPIRequest *request = [[OFFlickrAPIRequest alloc] initWithAPIContext:context];

// set the delegate, here we assume it's the controller that's creating the request object
[request setDelegate:self];
[request callAPIMethodWithGET:@"flickr.photos.getRecent" arguments:[NSDictionary dictionaryWithObjectsAndKeys:@"1", @"per_page", nil]]

, а затем реализовать следующий делегат:

- (void)flickrAPIRequest:(OFFlickrAPIRequest *)inRequest didCompleteWithResponse:(NSDictionary *)inResponseDictionary;

В настоящее время у меня есть этот код для сохранения NSDictionary в виде списка свойств в файл в качестве альтернативы одиночному:

  - (void)flickrAPIRequest:(OFFlickrAPIRequest *)inRequest didCompleteWithResponse:     (NSDictionary *)inResponseDictionary{
if([inResponseDictionary writeToFile:@"inResponseDictionary.xml" atomically:TRUE])
{
NSLog(@"%@", [[NSFileManager defaultManager] fileExistsAtPath:@"inResponseDictionary.xml"]);
}
}

Когда я читаю этот файл обратно, я получаю Null. Файл читается как таковой:

NSDictionary *inResponseDictionary = [NSDictionary dictionaryWithContentsOfFile:@"inResponseDictionary.xml"];
NSDictionary *photoDict = [[inResponseDictionary valueForKeyPath:@"photos.photo"] objectAtIndex:0];

NSLog(@"%@", [photoDict count]);

Есть ли лучший способ сохранить эти данные из ObjectiveFlickr, чтобы к ним могли обращаться другие классы и контроллеры представления? Или есть лучший способ реализовать это в View Controller.

1 Ответ

1 голос
/ 28 мая 2011

Что находится в возвращенном NSDictionary?Вы уверены, что все они являются действительными объектами plist?Данные фотографии, возможно, должны быть изменены (скажем, база 64 закодирована в массив), прежде чем ваша запись будет работать.

Документы для NSDictionary writeToFile: скажем

Этот метод рекурсивно проверяетчто все содержащиеся объекты являются объектами списка свойств (экземплярами NSData, NSDate, NSNumber, NSString, NSArray или NSDictionary) перед записью файла и возвращают NO, если все объекты не являются объектами списка свойств, поскольку результирующий файл не будетбыть действительным списком свойств.

Что касается одноэлементного аспекта - будете ли вы совершать более одного из этих вызовов одновременно?Есть ли необходимость сохранять данные?Если нет и нет, просто держите словарь в памяти.Если у вас происходит несколько вызовов одновременно, вам понадобится еще один уровень абстракции (некоторая индексация), чтобы поместить результаты каждого вызова в свое собственное уникальное местоположение.И это не происходит с вашей текущей реализацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...