- tableView 和 collectionView 的數(shù)據(jù)聯(lián)動(dòng)
左側(cè) tableView 中的分類點(diǎn)擊后,獲取對(duì)應(yīng)的數(shù)據(jù)凛驮,填充到右側(cè) collectionView 中。
研究了下讀本地 JSON 和遠(yuǎn)程 JSON 的寫(xiě)法条辟,讀 HTTP 請(qǐng)求數(shù)據(jù)是通過(guò)構(gòu)建 request 來(lái)獲取
- (void)fetchRemoteJSON:(NSString *) pathForResource {
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:pathForResource]];
[request setHTTPMethod:@"GET"];
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
[[session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// 捕獲錯(cuò)誤
NSError *error2;
// 轉(zhuǎn)換格式
NSDictionary *dictionary2 = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error2];
// 捕獲錯(cuò)誤
if (error2) {
NSLog(@"JSON parse error:%@", error2.localizedDescription);
}
NSLog(@"remoteData %@", dictionary2);
}] resume];
}
今天加上了左側(cè)和右側(cè)不同的數(shù)據(jù)黔夭,聯(lián)動(dòng)起來(lái)最終是這個(gè)樣子
tribe-rank.gif
部落排行的 Demo 做到這里也差不多了,后續(xù)還可以加上數(shù)據(jù)緩存相關(guān)的一些東西羽嫡。
OC 里邊沒(méi)有像 WEB 中 Promise 的寫(xiě)法本姥,更多是通過(guò) Block 回掉的方式來(lái)實(shí)現(xiàn)異步操作。如果是嵌套的異步操作不會(huì)造成像 JS 中的毀掉地獄么杭棵?下午培訓(xùn)聽(tīng) @justiny 講了我們可以用 GCD 和 Operation 來(lái)更優(yōu)雅地寫(xiě)同步異步代碼婚惫。
- IOS 并發(fā)和異步編程 培訓(xùn)
重新認(rèn)識(shí)了多線程,多線程間通信的各種問(wèn)題魂爪〕矫睿總結(jié)起來(lái)就是避免使用多線程。