首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iPhone上的单例中存储来自ObjectiveFlickr的数据

在iPhone上的单例中存储来自ObjectiveFlickr的数据
EN

Stack Overflow用户
提问于 2011-05-28 05:20:42
回答 1查看 285关注 0票数 0

目标是拥有一个名为FetchData.h/.m的单例数据控制器类,它使用ObjectiveFlickr ( https://github.com/lukhnos/objectiveflickr )拉取数据。

FetchData.m使用以下命令获取数据:

代码语言:javascript
复制
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]]

然后实现以下委托:

代码语言:javascript
复制
- (void)flickrAPIRequest:(OFFlickrAPIRequest *)inRequest didCompleteWithResponse:(NSDictionary *)inResponseDictionary;

目前,我使用以下代码将NSDictionary作为属性列表保存到文件中,作为单例的替代方法:

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

当我读回这个文件时,我得到的结果是Null。按如下方式回读该文件:

代码语言:javascript
复制
NSDictionary *inResponseDictionary = [NSDictionary dictionaryWithContentsOfFile:@"inResponseDictionary.xml"];
NSDictionary *photoDict = [[inResponseDictionary valueForKeyPath:@"photos.photo"] objectAtIndex:0];

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

有没有一种更好的方法来存储来自ObjectiveFlickr的数据,以便其他类和视图控制器可以访问它?或者有没有更好的方法在视图控制器中实现这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-28 08:23:04

返回的NSDictionary中有什么?你确定它们都是有效的plist对象吗?可能需要修改照片数据(例如,将base64编码到一个数组中),然后才能进行写入。

NSDictionary writeToFile的文档:

此方法在写出文件之前以递归方式验证所有包含的对象是否都是属性列表对象( NSData、NSDate、NSNumber、NSString、NSArray或NSDictionary的实例),如果所有对象都不是属性列表对象,则返回NO,因为生成的文件不是有效的属性列表。

至于单例方面--你会一次进行多个这样的调用吗?是否需要持久化数据?如果不是,只需将字典保存在内存中。如果您有多个调用同时发生,您将需要另一个抽象层(一些索引)来将每个调用的结果放在它自己的唯一位置。而这不会发生在您当前的实现中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6157817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档