美文网首页
iOS小知识整理

iOS小知识整理

作者: Double_kay | 来源:发表于2018-07-20 10:09 被阅读46次

一. 版本更新

  1. 获取本地版本号:
    NSString *currentVersion = [[NSBundle mainBundle]objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
  2. 请求appstore信息:
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager GET:[NSString stringWithFormat:@"http://itunes.apple.com/lookup?id=%@",appID] parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
         [LPActivityIndicatorView hide];
        NSArray * results = responseObject[@"results"];
        if (results && results.count>0)
        {
            NSDictionary * dic = results.firstObject;
            NSString *lineVersion = dic[@"version"];//版本号
            NSString *releaseNotes = dic[@"releaseNotes"];//更新说明
            //NSString * trackViewUrl = dic[@"trackViewUrl"];//链接
            
            if ([lineVersion compare:self.currentVersion options:NSNumericSearch] == NSOrderedDescending)
                {//线上版本大于本地版本
                UIAlertController * alert = [UIAlertController alertControllerWithTitle:[NSString stringWithFormat:@"发现新版本%@",lineVersion] message:releaseNotes preferredStyle:UIAlertControllerStyleAlert];
                UIAlertAction * ok = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleDefault handler:nil];
                UIAlertAction * update = [UIAlertAction actionWithTitle:@"去更新" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
                    //跳转到App Store
                    NSString *urlStr = [NSString stringWithFormat:@"itms-apps://itunes.apple.com/cn/app/id%@?mt=8",appID];
                    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlStr]];
                }];
                [alert addAction:ok];
                [alert addAction:update];
                [self presentViewController:alert animated:YES completion:nil];
            }else if ([lineVersion isEqualToString:self.currentVersion]){
                NSLog(@"%@", [NSString stringWithFormat:@"版本%@,已是最新版本!",lineVersion]);
            }
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
    }];

二. SDWebImage加载验证码图片,并显示小菊花:

   MBProgressHUD*hud = [ProgressHUD showLoadToView:kAppWindow];

    UIImage *defaultImage = [UIImage imageNamed:@"placeholder"];

    NSURL *urlImage = [NSURL URLWithString:@""];

    [self.imageView sd_setImageWithURL:urlImage placeholderImage:defaultImage options:SDWebImageRefreshCached completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {

        [hud hideAnimated:YES];

    }];

SDWebImageRefreshCached = 1 << 4,:一个图片缓存了,还是会重新请求.并且缓存侧略依据NSURLCache而不是SDWebImage.URL不变,图片会更新时使用

四. Xcode中SVN自动忽略.a文件的解决方法:

  1. 打开终端,输入cd,空格,然后将需要上传的.a文件所在的文件夹(不是.a文件)拖拽到终端(此办法无需输入繁琐的路径,快捷方便) ,回车;
  2. 之后再输入如下命令:svn add libWeChatSDK.a,回车;
  3. 之后会出现:A (bin) libOCMock.a 表示添加成功,打开Versions就可以看到,刚才添加的.a文件,此时就可以手动上传了。

五. 11.3 低版本Xcode不支持高版本iOS真机调试解决方法:

  1. 复制路径:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
shift+command+G 打开
  1. 复制iPhoneOS.sdk,改名11.3


    image
  2. 复制路径:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
    image
    创建新的真机需要的版本,然后将11.3真机调试包拷贝到文件夹
    11.3真机调试包链接 密码: wpw8
  3. 修改路径SDKSettings.plist文件中所有版本相关的数字为11.3
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk
    image
    可能无法直接修改,可以拷贝一份,然后修改之后再覆盖上去,然后再重新启动Xcode,可能设备连接会处于繁忙状态,clear一下,或者重新插一下电源,或者手机重启一下就好

六. iOS dateFromString: 方法真机返回nil:

在模拟器上正常运行,在真机上运行返回nil,设置NSDateFormatter对象的locale属性.

+(NSString*)getTimeWithString:(NSString*)string Format:(NSString*)format{

//    NSDate * date = [NSDate dateWithTimeIntervalSince1970:[string longLongValue]/1000];

    NSDateFormatter * formatter = [[NSDateFormatter alloc] init];

    [formattersetDateFormat:@"MMM dd, yyyy KK:mm:ss aa"];

    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_CN"];

    [formattersetLocale:locale];

    NSDate*date = [formatterdateFromString:string];

    if(format) {

        [formattersetDateFormat:format];

    }else{

         [formattersetDateFormat:@"YYYY-MM-dd HH:mm:ss"];

    }

    return [formatterstringFromDate:date];

}

关于NSDateFormatter的格式
G:公元时代,例如AD公元
yy:年的后2位
yyyy:完整年
MM:月,显示为1-12
MMM:月,显示为英文月份简写,如Jan
MMMM:月,显示为英文月份全称,如Janualy
dd:日,2位数表示,如02
d:日,1-2位显示,如2
EEE:简写星期几,如Sun
EEEE:全写星期几,如星期日
aa:上下午,AM / PM
H:时,24小时制,0-23
K:时,12小时制,0-11
m:分,1-2位
mm:分,2位
s:秒,1-2位
ss:秒,2位
S:毫秒

七.将一个对象的值完整的赋给另一个对象:

   NSDictionary *dict = [model mj_keyValues];
   NSObject *newModel =[NSObject new];
   [newModel setValuesForKeysWithDictionary:dict];

相关文章

网友评论

      本文标题:iOS小知识整理

      本文链接:https://www.haomeiwen.com/subject/otrfmftx.html