首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >键值对目标-C

键值对目标-C
EN

Stack Overflow用户
提问于 2014-05-21 12:10:49
回答 1查看 2.1K关注 0票数 0

因此,我被赋予了使用由讲师创建的flickr的任务,我们必须使用它来填充特定用户的桌面视图。我能数数元素的数量等等,但我不知道我的一生如何真正调用图像/照片元素的一对?

这是代码:

代码语言:javascript
复制
- (NSArray *) photosForUser: (NSString *) friendUserName
{
    NSString *request = [NSString stringWithFormat: @"https://api.flickr.com/services/rest/?method=flickr.people.findByUsername&username=%@", friendUserName];
    NSDictionary *result = [self fetch: request];
    NSString *nsid = [result valueForKeyPath: @"user.nsid"];

    request = [NSString stringWithFormat: @"https://api.flickr.com/services/rest/?method=flickr.photos.search&per_page=%ld&has_geo=1&user_id=%@&extras=original_format,tags,description,geo,date_upload,owner_name,place_url", (long) self.maximumResults, nsid];

    result = [self fetch: request];

    return [result valueForKeyPath: @"photos.photo"];
}

用于获取数据的内容:

代码语言:javascript
复制
- (NSDictionary *) fetch: (NSString *) request
{
        self.apiKey = @"26225f243655b6eeec8c15d736b58b9a";


        NSLog(@"self.APIKey = %@", self.apiKey);

    NSString *query = [[NSString stringWithFormat: @"%@&api_key=%@&format=json&nojsoncallback=1", request, self.apiKey]
                       stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
    NSURL *queryURL = [NSURL URLWithString: query];
    NSData *responseData = [NSData dataWithContentsOfURL: queryURL];
    if (!responseData)
        return nil;

    NSError *error = nil;
    NSDictionary *jsonContent = [NSJSONSerialization JSONObjectWithData: responseData options: NSJSONReadingMutableContainers error: &error];

    if (!jsonContent)
        NSLog(@"Could not fetch '%@': %@", request, error);

    return jsonContent;
}

有人能给我指点一下我如何才能真正地调用这个图像吗?

非常感谢。

编辑:这是从flickr接收到的JSON数组中的NSLog输出。

代码语言:javascript
复制
latestPhotos (
    {
    accuracy = 16;
    context = 0;
    dateupload = 1397679575;
    description =         {
        "_content" = "<a href=\"https://www.flickr.com/photos/tanjabarnes/\">
    };
    farm = 3;
    "geo_is_contact" = 0;
    "geo_is_family" = 0;
    "geo_is_friend" = 0;
    "geo_is_public" = 1;
    id = 13902059464;
    isfamily = 0;
    isfriend = 0;
    ispublic = 1;
    latitude = "34.062214";
    longitude = "-118.35862";
    owner = "66956608@N06";
    ownername = Flickr;
    "place_id" = "I78_uSpTWrhPjaINgQ";
    secret = cc17afe1b3;
    server = 2928;
    tags = "panorama losangeles beverlyhills tanjabarnes";
    title = blahlbah
    woeid = 28288701;
}
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-21 12:24:28

您需要使用JSON数组中的in来构造映像的URL。如下所示:

代码语言:javascript
复制
http://farm{farm-id}.staticflickr.com/{server-id}/{id}_{secret}.jpg

代码语言:javascript
复制
http://farm{farm-id}.staticflickr.com/{server-id}/{id}_{secret}_[mstzb].jpg

代码语言:javascript
复制
http://farm{farm-id}.staticflickr.com/{server-id}/{id}_{o-secret}_o.(jpg|gif|png)

所以在你的例子中:

cc17afe1b3.jpg

以下是你如何获得你的图像:

代码语言:javascript
复制
  NSArray *photos = [self photosForUser:friendUserName];
  for(NSDictionary *dictionary in photos) {
    NSString *farmId = [dictionary objectForKey:@"farm"];
    NSString *serverId = [dictionary objectForKey:@"server"];
    NSString *photoId = [dictionary objectForKey:@"id"];
    NSString *secret = [dictionary objectForKey:@"secret"];

    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://farm%@.staticflickr.com/%@/%@_%@.jpg", farmId, serverId, photoId, secret]];

    UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];
    // Do something with your image here
  }

参考资料:https://www.flickr.com/services/api/misc.urls.html

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

https://stackoverflow.com/questions/23782785

复制
相关文章

相似问题

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