1.UITableView
[ tableView reloadData] 會(huì)清空tableView的indexPathsForSelectedRows (tableView自己記錄的選中數(shù)據(jù))
2.VoIP Push
生成voip push的pem
生成voip證書,加入鑰匙串
鑰匙串找到證書,點(diǎn)擊左邊的"三角形"展開(kāi)
選中證書和私鑰,右鍵選擇"導(dǎo)出2項(xiàng)",生成個(gè)人.p12文件(cert.p12)
最后用cert.p12文件生成pem文件(ck.pem),終端輸入命令:
openssl pkcs12 -in cert.p12 -out ck.pem -nodes -clcerts
服務(wù)器需要的p12文件為:只選擇證書(不選擇私鑰)導(dǎo)出的p12
模擬服務(wù)器發(fā)送push的文件:
https://github.com/lanyannoren/iOS_voip_push-php-
3.UISearchBar
修改UISeachBar取消按鈕的title
[searchBar setValue:@"Done" forKey:@"_cancelButtonText"];
iOS13開(kāi)始,蘋果不建議開(kāi)發(fā)者使用KVC,此方法失效
4.沙盒中保存JSON格式的文件
NSDictionary *jsonObj = @{@"one":@1, @"two":@2};
// 得到JSON格式的(NSData *)jsonData
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:jsonObj options:NSJSONWritingPrettyPrinted error:nil];
// jsonData生成jsonString
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
// 字符串保存到沙盒
[jsonString writeToFile:sandboxPath atomically:YES encoding:NSUTF8StringEncoding error:nil];
從沙盒讀取JSON文件
// json字符串
NSString *jsonString = [[NSString alloc] initWithContentsOfFile:sandboxPath encoding:NSUTF8StringEncoding error:nil];
// 字符串轉(zhuǎn)成NSData
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
// data轉(zhuǎn)JSON對(duì)象
id jsonData = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];
5.約束 / frame
當(dāng)改變view的約束時(shí), 如果用KVO監(jiān)聽(tīng)view的frame,此時(shí)是無(wú)法接受回調(diào)的,可以改用監(jiān)聽(tīng)bounds