iOS特别技能点总结3

CFAbsoluteTimeGetCurrent()
获取系统运行的当前绝对时间

nsarray 类定义的方法

1.makeObjectsPerformSelector:@select(aMethod)
简介:让数组中的每个元素 都调用 aMethod

2.makeObjectsPerformSelector:@select(aMethod) withObject:oneObject
简介:让数组中的每个元素 都调用 aMethod 并把 withObject 后边的 oneObject 对象做为参数传给方法aMethod

支付宝的接入注意点总结

1.确保需要的库全部导入

2.partner ,seller ,privateKey 三个参数的完整

3.支付完成跳回程序需要设置 appScheme , 最好使用英文,中文识别可能出错,造成无法跳回。

去除点击 cell 的效果

[tableView deselectRowAtIndexPath:indexPath animated:YES];

时间日期的格式转化

NSNumber *startTime = [temp objectForKey:@"addtime"];
NSDate *startTimeDate = [NSDate dateWithTimeIntervalSince1970:[startTime intValue]];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm"];//设置源时间字符串的格式
NSString *targetTime = [formatter stringFromDate:startTimeDate];//将时间转化成目标时间字符串

修改 tableCell 里面的图片圆角

在 cell 的 .m 文件里面修改

- (void)awakeFromNib {
    _imgHead.clipsToBounds = YES;
    _imgHead.layer.cornerRadius = 30;
 }

下拉刷新的时候如何防止 crash (不判断是否有新数据加入,直接刷新,会有轻微的不适感)

在下拉刷新的时候,需要将数组内所有的数据移除,并且将界面刷新一遍,这样可以防止 crash。

[self.trainRoutineArray removeAllObjects];
[self.table reloadData];

在解析 json 数据的时候需要在循环体内初始化 Model ,这样才是正确的,在外部初始化会导致添加的数据重复。

原因: 在外部初始化,会导致内存空间只分配一次,在第一次赋值之后,会因为 Model 里面的 NSString 类型的数据无法被第二次赋值,造成了第二次添加数据到数组的时候还是第一次的数据。

常用日期结构:

yyyy-MM-dd HH:mm:ss.SSS
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd
MM dd yyyy

iOS-NSDateFormatter 格式说明:

G: 公元时代,例如AD公元
yy:年的后2位
yyyy:完整年
MM:月,显示为1-12
MMM:月,显示为英文月份简写,如 Jan
MMMM:月,显示为英文月份全称,如 Janualy
dd:日,2位数表示,如02
d:日,1-2位显示,如 2
EEE:简写星期几,如Sun
EEEE:全写星期几,如Sunday
aa:上下午,AM/PM
H:时,24小时制,0-23
K:时,12小时制,0-11
m:分,1-2位
mm:分,2位
s:秒,1-2位
ss:秒,2位
S:毫秒
  • 错误: Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[__NSCFNumber length]: unrecognized selector sent to instance 0x15580c90’

    原因: 因为在接收的 Model 里面有些数据类型跟 json 数据的字段类型不同 (一般是非字符串的类型造成的)
    解决方案: 将 json 数据里面的 int 或者 double 类型直接使用中间类型 NSNumber 类型来接收,并转化成 NSString 类型。

上传图片

[afManager POST:url parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

     NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
     formatter.dateFormat = @"yyyyMMddHHmmss";
     NSString *str = [formatter stringFromDate:[NSDate date]];

     [formData appendPartWithFileData:filename name:@"file" fileName:[NSString stringWithFormat:@"%@image1.png",str] mimeType:@"image/png"];
 } success:^(AFHTTPRequestOperation * _Nonnull operation, id  _Nonnull responseObject) {

     if (success) {

         success(responseObject);
      }

 } failure:^(AFHTTPRequestOperation * _Nonnull operation, NSError * _Nonnull error) {

     if (failure) {

       failure(error);
    }
 }];