iOS UICollectionView 入门 03 从Flickr获取数据
2015-03-14 18:10
225 查看
Flickr是国外一个照片分享网站,它提供了供开发人员使用的API,通过这些API,我们可以搜索相片,添加相片也可以对相片做评论。
要使用Flickr API,需要通过以下网址进行注册:
http://www.flickr.com/services/api/keys/apply/
对于测试工程,Flickr有一个sample key,使用这个key无需注册。
将以下语句贴到浏览器地址栏,进行任意的搜索:
复制&api_key=到下一个&之间的内容,就是我们所需要的sample key
API key就是:e4deb65795343c6125d5aa32e0eb04ca
我们的目的是讲解UICollectionView而不是Flickr API,可以使用已经创建好的一系列用于在Flickr进行搜索的类。这两个类的下载链接为:UICollectionView测试代码使用的Flickr类
Flickr:提供用于执行搜索的简单阻塞式API,返回FlickrPhotos数组
FlickrPhoto:用于存储从Flickr获取的数据,包括缩略图、原图和比如ID之类的信息。
在viewDidLoad的最后初始化这三个变量:
编译执行,在output窗口可以看到以下信息:
这一节,我们完成了从Flickr获取数据的实现,下一节我们将为使用UICollectionView做准备,实现UICollectionView所需的一些列代理方法。
转载请注明出处:/article/9358078.html
要使用Flickr API,需要通过以下网址进行注册:
http://www.flickr.com/services/api/keys/apply/
对于测试工程,Flickr有一个sample key,使用这个key无需注册。
将以下语句贴到浏览器地址栏,进行任意的搜索:
http://www.flickr.com/services/api/explore/?method=flickr.photos.search
复制&api_key=到下一个&之间的内容,就是我们所需要的sample key
API key就是:e4deb65795343c6125d5aa32e0eb04ca
我们的目的是讲解UICollectionView而不是Flickr API,可以使用已经创建好的一系列用于在Flickr进行搜索的类。这两个类的下载链接为:UICollectionView测试代码使用的Flickr类
Flickr:提供用于执行搜索的简单阻塞式API,返回FlickrPhotos数组
FlickrPhoto:用于存储从Flickr获取的数据,包括缩略图、原图和比如ID之类的信息。
准备用于存储数据的数据结构
我们需要将每一次搜索的返回结果都记录下来,NSMutableDictionary是个不错的选择。我们使用搜索关键字作为字典的key。修改ViewController.m,添加对头文件的引用。#import "Flickr.h" #import "FlickrPhoto.h"声明字典,数组和指向Flickr类的指针:
@property (nonatomic, strong) NSMutableDictionary *searchResults; @property (nonatomic, strong) NSMutableArray *searchs; @property (nonatomic, strong) Flickr *flickr;
在viewDidLoad的最后初始化这三个变量:
self.searchs = [@[] mutableCopy]; self.searchResults = [@{} mutableCopy]; self.flickr = [[Flickr alloc] init];
获取数据
打开Flickr.m,替换kFlickrAPIKey为之前你所获取的sample key值:#define kFlickrAPIKey @"e4deb65795343c6125d5aa32e0eb04ca"修改ViewController.m,实现UITextFieldDelegate方法,这个方法以异步的方式根据搜索关键字使用Flickr类进行搜索。首先判断我们是否已经搜索过该关键字了。如果没有搜索过,就执行搜索,处理返回的数据,存储到字典和数组中。然后更新UI。如果有任何错误,则以log方式输出。
- (BOOL)textFieldShouldReturn:(UITextField *)textField { [self.flickr searchFlickrForTerm:textField.text completionBlock:^(NSString *searchTerm, NSArray *results, NSError *error) { if (results && [results count] > 0) { if (![self.searchs containsObject:searchTerm]) { NSLog(@"Found %lu photos matching %@", (unsigned long)[results count], searchTerm); [self.searchs insertObject:searchTerm atIndex:0]; self.searchResults[searchTerm] = results; } dispatch_async(dispatch_get_main_queue(), ^{ // placeholder: reload collection view data }); } else { NSLog(@"Error searching Flickr: %@", error.localizedDescription); } }]; [textField resignFirstResponder]; return YES; }
编译执行,在output窗口可以看到以下信息:
2015-03-14 21:10:01.570 Flickr Search[9827:97615] http://farm6.staticflickr.com/5610/15638863271_62e9209da7_m.jpg 2015-03-14 21:10:02.652 Flickr Search[9827:97615] http://farm4.staticflickr.com/3950/15021381983_ddfde648d4_m.jpg这里,我遇到了The operation couldn't be completed.(Cocoa error 256)错误,解决办法是换一个模拟器,我的iPad Air模拟器会出这个问题,换成iPad 2模拟机就可以了。
这一节,我们完成了从Flickr获取数据的实现,下一节我们将为使用UICollectionView做准备,实现UICollectionView所需的一些列代理方法。
转载请注明出处:/article/9358078.html
相关文章推荐
- iOS UICollectionView 入门 05 创建自定义UICollectionViewCell
- IOS UICollectionView 横向分页加载(左滑加载数据)
- iOS UICollectionView 入门 06 添加标题view
- IOS菜鸟的所感所思(四)——自定义UICollectionViewCell以及网络数据的添加。
- iOS UICollectionView 入门 07 点击cell放大图片
- iOS UICollectionView 入门 02 构建松木板
- iOS UICollectionView reloadData后找到某个cell 更新某个cell数据
- iOS UICollectionView数据少无法滚动问题?
- iOS 关于UICollectionView选中状态,当使用reloadData方法时出现数据的问题?
- iOS UICollectionView 入门 07 点击cell放大图片
- iOS UICollectionView 入门 04 使用UICollectionView的准备工作
- iOS UICollectionView 入门 01 简介
- iOS UIcollectionview 数据量少时候bounces无效的解决方法
- ASP小偷(远程数据获取)程序入门教程
- ios中点击地图控件MKMapView的某点获取该点的经纬度
- 数据处理的两个基本问题03 - 零基础入门学习汇编语言40
- [android]webview访问jsp页面,能否从jsp页面获取数据
- Andorid入门--HTTP数据传输和WebView的使用
- 数据类型,运算符和表达式02 - 零基础入门学习C语言03
- iOS 应用view之间数据传递的方式