iOS UICollectionView 入门 03 从Flickr获取数据
Flickr是國外一個照片分享網(wǎng)站,它提供了供開發(fā)人員使用的API,通過這些API,我們可以搜索相片,添加相片也可以對相片做評論。
要使用Flickr API,需要通過以下網(wǎng)址進(jìn)行注冊:
http://www.flickr.com/services/api/keys/apply/
對于測試工程,Flickr有一個sample key,使用這個key無需注冊。
將以下語句貼到瀏覽器地址欄,進(jìn)行任意的搜索:
http://www.flickr.com/services/api/explore/?method=flickr.photos.search復(fù)制&api_key=到下一個&之間的內(nèi)容,就是我們所需要的sample key
API key就是:e4deb65795343c6125d5aa32e0eb04ca
我們的目的是講解UICollectionView而不是Flickr API,可以使用已經(jīng)創(chuàng)建好的一系列用于在Flickr進(jìn)行搜索的類。這兩個類的下載鏈接為:UICollectionView測試代碼使用的Flickr類
Flickr:提供用于執(zhí)行搜索的簡單阻塞式API,返回FlickrPhotos數(shù)組
FlickrPhoto:用于存儲從Flickr獲取的數(shù)據(jù),包括縮略圖、原圖和比如ID之類的信息。
準(zhǔn)備用于存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)
我們需要將每一次搜索的返回結(jié)果都記錄下來,NSMutableDictionary是個不錯的選擇。我們使用搜索關(guān)鍵字作為字典的key。修改ViewController.m,添加對頭文件的引用。
#import "Flickr.h" #import "FlickrPhoto.h"聲明字典,數(shù)組和指向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];
獲取數(shù)據(jù)
打開Flickr.m,替換kFlickrAPIKey為之前你所獲取的sample key值:
#define kFlickrAPIKey @"e4deb65795343c6125d5aa32e0eb04ca"修改ViewController.m,實(shí)現(xiàn)UITextFieldDelegate方法,這個方法以異步的方式根據(jù)搜索關(guān)鍵字使用Flickr類進(jìn)行搜索。首先判斷我們是否已經(jīng)搜索過該關(guān)鍵字了。如果沒有搜索過,就執(zhí)行搜索,處理返回的數(shù)據(jù),存儲到字典和數(shù)組中。然后更新UI。如果有任何錯誤,則以log方式輸出。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {[self.flickr searchFlickrForTerm:textField.textcompletionBlock:^(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; }
編譯執(zhí)行,在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模擬機(jī)就可以了。
這一節(jié),我們完成了從Flickr獲取數(shù)據(jù)的實(shí)現(xiàn),下一節(jié)我們將為使用UICollectionView做準(zhǔn)備,實(shí)現(xiàn)UICollectionView所需的一些列代理方法。
轉(zhuǎn)載請注明出處:http://blog.csdn.net/yamingwu/article/details/44261671
總結(jié)
以上是生活随笔為你收集整理的iOS UICollectionView 入门 03 从Flickr获取数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab 数据混合运算,C++中混合
- 下一篇: 小程序视频功能