1.UITableView
[ tableView reloadData] 会清空tableView的indexPathsForSelectedRows (tableView自己记录的选中数据)
2.VoIP Push
生成voip push的pem
生成voip证书,加入钥匙串
钥匙串找到证书,点击左边的"三角形"展开
选中证书和私钥,右键选择"导出2项",生成个人.p12文件(cert.p12)
最后用cert.p12文件生成pem文件(ck.pem),终端输入命令:
openssl pkcs12 -in cert.p12 -out ck.pem -nodes -clcerts
服务器需要的p12文件为:只选择证书(不选择私钥)导出的p12
模拟服务器发送push的文件:
https://github.com/lanyannoren/iOS_voip_push-php-
3.UISearchBar
修改UISeachBar取消按钮的title
[searchBar setValue:@"Done" forKey:@"_cancelButtonText"];
iOS13开始,苹果不建议开发者使用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];
// 字符串转成NSData
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
// data转JSON对象
id jsonData = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:nil];
5.约束 / frame
当改变view的约束时, 如果用KVO监听view的frame
,此时是无法接受回调的,可以改用监听bounds