iOS_常用判断以及格式校验方法_记录用

  • 设备相关

  • 获取当前设备版本号

+ (NSString *)getCFBundleVersion{
    NSString *Versionidstring =[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    if (Versionidstring) {
        return Versionidstring;
    }
    return nil;
}
  • 获取当前设备Build号

+ (NSString *)getCFBuildVersion{
    NSString *Versionidstring =[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
    if (Versionidstring) {
        return Versionidstring;
    }
    return nil;
}
  • 获取当前设备型号

+ (NSString *)deviceModelName{
    struct utsname systemInfo;
    uname(&systemInfo);
    NSString *deviceModel = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
    if ([deviceModel isEqualToString:@"iPhone1,1"])    return @"iPhone 1G";
    if ([deviceModel isEqualToString:@"iPhone1,2"])    return @"iPhone 3G";
    if ([deviceModel isEqualToString:@"iPhone2,1"])    return @"iPhone 3GS";
    if ([deviceModel isEqualToString:@"iPhone3,1"])    return @"iPhone 4";
    if ([deviceModel isEqualToString:@"iPhone3,2"])    return @"Verizon iPhone 4";
    if ([deviceModel isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
    if ([deviceModel isEqualToString:@"iPhone5,1"])    return @"iPhone 5";
    if ([deviceModel isEqualToString:@"iPhone5,2"])    return @"iPhone 5";
    if ([deviceModel isEqualToString:@"iPhone5,3"])    return @"iPhone 5C";
    if ([deviceModel isEqualToString:@"iPhone5,4"])    return @"iPhone 5C";
    if ([deviceModel isEqualToString:@"iPhone6,1"])    return @"iPhone 5S";
    if ([deviceModel isEqualToString:@"iPhone6,2"])    return @"iPhone 5S";
    if ([deviceModel isEqualToString:@"iPhone7,1"])    return @"iPhone 6 Plus";
    if ([deviceModel isEqualToString:@"iPhone7,2"])    return @"iPhone 6";
    if ([deviceModel isEqualToString:@"iPhone8,1"])    return @"iPhone 6s";
    if ([deviceModel isEqualToString:@"iPhone8,2"])    return @"iPhone 6s Plus";
    if ([deviceModel isEqualToString:@"iPhone9,1"])    return @"iPhone 7 (CDMA)";
    if ([deviceModel isEqualToString:@"iPhone9,3"])    return @"iPhone 7 (GSM)";
    if ([deviceModel isEqualToString:@"iPhone9,2"])    return @"iPhone 7 Plus (CDMA)";
    if ([deviceModel isEqualToString:@"iPhone9,4"])    return @"iPhone 7 Plus (GSM)";
    if ([deviceModel isEqualToString:@"iPhone10,1"]||[deviceModel isEqualToString:@"iPhone10,4"])    return @"iPhone 8";
    if ([deviceModel isEqualToString:@"iPhone10,2"]||[deviceModel isEqualToString:@"iPhone10,5"])    return @"iPhone 8 Plus";
    if ([deviceModel isEqualToString:@"iPhone10,3"]||[deviceModel isEqualToString:@"iPhone10,6"])    return @"iPhone X";
    if ([deviceModel isEqualToString:@"iPhone11,2"])    return @"iPhone XS";
    if ([deviceModel isEqualToString:@"iPhone11,6"])    return @"iPhone XS MAX";
    if ([deviceModel isEqualToString:@"iPhone11,8"])    return @"iPhone XR";
    if ([deviceModel isEqualToString:@"iPhone12,1"])    return @"iPhone_11";
    if ([deviceModel isEqualToString:@"iPhone12,3"])    return @"iPhone_11_Pro";
    if ([deviceModel isEqualToString:@"iPhone12,5"])    return @"iPhone_11_Pro_Max";
    
    if ([deviceModel isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";
    if ([deviceModel isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";
    if ([deviceModel isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";
    if ([deviceModel isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";
    if ([deviceModel isEqualToString:@"iPod5,1"])      return @"iPod Touch 5G";
    
    if ([deviceModel isEqualToString:@"iPad1,1"])      return @"iPad";
    if ([deviceModel isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
    if ([deviceModel isEqualToString:@"iPad2,2"])      return @"iPad 2 (GSM)";
    if ([deviceModel isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
    if ([deviceModel isEqualToString:@"iPad2,4"])      return @"iPad 2 (32nm)";
    if ([deviceModel isEqualToString:@"iPad2,5"])      return @"iPad mini (WiFi)";
    if ([deviceModel isEqualToString:@"iPad2,6"])      return @"iPad mini (GSM)";
    if ([deviceModel isEqualToString:@"iPad2,7"])      return @"iPad mini (CDMA)";
    if ([deviceModel isEqualToString:@"iPad3,1"])      return @"iPad 3(WiFi)";
    if ([deviceModel isEqualToString:@"iPad3,2"])      return @"iPad 3(CDMA)";
    if ([deviceModel isEqualToString:@"iPad3,3"])      return @"iPad 3(4G)";
    if ([deviceModel isEqualToString:@"iPad3,4"])      return @"iPad 4 (WiFi)";
    if ([deviceModel isEqualToString:@"iPad3,5"])      return @"iPad 4 (4G)";
    if ([deviceModel isEqualToString:@"iPad3,6"])      return @"iPad 4 (CDMA)";
    if ([deviceModel isEqualToString:@"iPad4,1"])      return @"iPad Air";
    if ([deviceModel isEqualToString:@"iPad4,2"])      return @"iPad Air";
    if ([deviceModel isEqualToString:@"iPad4,3"])      return @"iPad Air";
    if ([deviceModel isEqualToString:@"iPad5,3"])      return @"iPad Air 2";
    if ([deviceModel isEqualToString:@"iPad5,4"])      return @"iPad Air 2";
    
    if ([deviceModel isEqualToString:@"i386"])         return @"Simulator";
    if ([deviceModel isEqualToString:@"x86_64"])       return @"Simulator";

    if ([deviceModel isEqualToString:@"iPad4,4"]
        ||[deviceModel isEqualToString:@"iPad4,5"]
        ||[deviceModel isEqualToString:@"iPad4,6"])      return @"iPad mini 2";
    
    if ([deviceModel isEqualToString:@"iPad4,7"]
        ||[deviceModel isEqualToString:@"iPad4,8"]
        ||[deviceModel isEqualToString:@"iPad4,9"])      return @"iPad mini 3";

    return deviceModel;
}

  • 字符串相关

  • 空字符串转化

+ (NSString *)convertNullString:(id)object{
    if (!object) {
        return @"";
    }
    if (object && [object isEqual:[NSNull null]]){
        return @"";
    }else if ([object isKindOfClass:[NSNull class]]){
        return @"";
    } else if (object == nil) {
        return @"";
    }
    if ([object isKindOfClass:[NSString class]]) {
        return object;
    }
    return [object stringValue];
}
  • 空数组转化

+ (NSArray *)converNullArray:(id)object{
   if (!object) {
       return @[];
   }
   if (object && [object isEqual:[NSNull null]]){
       return @[];
   }else if ([object isKindOfClass:[NSNull class]]){
       return @[];
   } else if (object == nil) {
       return @[];
   }
   if ([object isKindOfClass:[NSArray class]]) {
       return object;
   }
   return @[];
}
  • 空字典转化

+ (NSDictionary *)converNullDictionary:(id)object{
   if (!object) {
       return @{};
   }
   if (object && [object isEqual:[NSNull null]]){
       return @{};
   }else if ([object isKindOfClass:[NSNull class]]){
       return @{};
   } else if (object == nil) {
       return @{};
   }
   if ([object isKindOfClass:[NSDictionary class]]) {
       return object;
   }
   return @{};
}
  • json字符串转对象

+ (id)toDictionaryWithJsonString:(NSString *)jsonString{
    if (jsonString == nil) {
        return nil;
    }
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSError *err;
    id dic = [NSJSONSerialization JSONObjectWithData:jsonData
                                                        options:NSJSONReadingMutableContainers
                                                          error:&err];
    if(err){
        NSLog(@"json解析失败:%@",err);
        return nil;
    }
    return dic;
}

  • 对象转JSON字符串

+ (NSString *)toJsonWithObject:(id)obj{
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:obj options:NSJSONWritingPrettyPrinted error:nil];
    NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    return [[jsonString  stringByReplacingOccurrencesOfString:@"\n" withString:@""] stringByReplacingOccurrencesOfString:@" " withString:@""];
}
  • 获取url链接后的参数

+ (NSDictionary *)getParmarsWithOriginString:(NSString *)originString{
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    NSURLComponents *urlComponents = [[NSURLComponents alloc] initWithString:originString];
    [urlComponents.queryItems enumerateObjectsUsingBlock:^(NSURLQueryItem * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        [params setObject:obj.value forKey:obj.name];
    }];
    return [params copy];
}
  • 页面控制器相关

  • 获取当前页面控制器

+ (UIViewController *)getCurrentVC {
    UIViewController* vc = [UIApplication sharedApplication].keyWindow.rootViewController;
    while (1)    {
        if ([vc isKindOfClass:[UITabBarController class]]) {
            vc = ((UITabBarController*)vc).selectedViewController;
            
        }
        if ([vc isKindOfClass:[UINavigationController class]]) {
            vc = ((UINavigationController*)vc).visibleViewController;
            
        }
        if (vc.presentedViewController) {
            vc = vc.presentedViewController;
            
        }else{
            break;
            
        }
        
    }
    return vc;
}
  • 判断某个页面是否已存在UIViewController+Category

- (BOOL)isContentsViewController:(NSString *)viewControllerString{
    if ([viewControllerString isEqualToString:@""] ||viewControllerString == nil) {
        return NO;
    }
    NSArray *list = self.navigationController.viewControllers;
    BOOL isHave = NO;
    for (int i = 0; i< list.count; i++) {
        UIViewController *temp = list[i];
        if ([[temp class] isEqual:NSClassFromString(viewControllerString)]) {
            isHave = YES;
        }
    }
    return isHave;
}

  • 获取某个页面在控制器列表内的位置UIViewController+Category

// -1代表不存在 
- (int)getIndexViewController:(NSString *)viewControllerString{
    NSArray *list = self.navigationController.viewControllers;
    int isIndex = -1;
    for (int i = 0; i< list.count; i++) {
        UIViewController *temp = list[i];
        if ([[temp class] isEqual:NSClassFromString(viewControllerString)]) {
            isIndex = i;
            break;
        }
    }
    return isIndex;
}

猜你喜欢

转载自blog.csdn.net/FlyingKuiKui/article/details/106075812