用于个人资料图片网址的Twitter的JSON Feed

时间:2011-08-04 18:05:00

标签: iphone objective-c json nsurlconnection nsdata

我试图找出像LazyTableImages一样异步下载Twitter JSON URL的图像文件的方法。 JSON文件看起来像:

{
"completed_in": 0.132,
"max_id": 99177223541628930,
"max_id_str": "99177223541628928",
"next_page": "?page=2&max_id=99177223541628928&q=mobile&rpp=1",
"page": 1,
"query": "mobile",
"refresh_url": "?since_id=99177223541628928&q=mobile",
"results": [
    {
        "created_at": "Thu, 04 Aug 2011 17:57:47 +0000",
        "from_user": "twhp_Bastary",
        "from_user_id": 235609046,
        "from_user_id_str": "235609046",
        "geo": {
            "coordinates": [
                -2.6766,
                118.8793
            ],
            "type": "Point"
        },
        "id": 99177223541628930,
        "id_str": "99177223541628928",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http://a1.twimg.com/profile_images/1431110298/315762105_normal.jpg",
        "source": "<a href="http://ubersocial.com" rel="nofollow">ÜberSocial for BlackBerry</a>",
        "text": "RT @DamnItsTrue: Good friends are priceless! #DamnItsTrue http://myloc.me/m9Kot",
        "to_user_id": null,
        "to_user_id_str": null
    }
],
"results_per_page": 1,
"since_id": 0,
"since_id_str": "0"

}

关键profile_image_URL需要在滚动tableview时异步加载图像,这样就不会破坏客户端滚动体验。 用于加载JSON的代码使用NSDictionary,每个标记都是密钥。

    NSDictionary *tweets = [twitter objectAtIndex:[indexPath row]];

cell.textLabel.text = [tweets objectForKey:@"text"];
cell.textLabel.font = [UIFont systemFontOfSize:14];

NSString *URL = [tweets objectForKey:@"profile_image_url"];
NSURL *url = [NSURL URLWithString:[tweets objectForKey:@"profile_image_url"]];
NSData *Tweetdata = [NSData dataWithContentsOfURL:url];
cell.imageView.image = [UIImage imageWithData:Tweetdata];

1 个答案:

答案 0 :(得分:0)

我使用Stanford CS193P示例代码中的ImageLoadingOperation类。

Google会找到使用它的各种项目。

如果您找到更新的方式,也许使用阻止,请发布任何结果。

使用最新的SDK知道最有效的方法是很好的。

编辑 - 链接

http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2010-winter是页面

这个项目使用线程方法从flickr下载照片。这是我用过的: http://www.stanford.edu/class/cs193p/cgi-bin/drupal/system/files/sample_code/11-ThreadedFlickrTableView.zip

ImageLoadingOperation是NSOperation的子类。当tableview单元格请求新图像时,它会将URL添加到队列中,并在后台线程上下载到本地NSDictionary。当它下载时使用performSelectorOnMainThread来重新加载主线程上的tableview,该主线程从字典中获取图像。

希望它有所帮助。