iOS獲取iPhone系統(tǒng)信息和服務(wù)器返回空的常規(guī)處理

前言:

在項(xiàng)目中經(jīng)常會(huì)遇到需要獲取系統(tǒng)的信息來處理一些特殊的需求和服務(wù)端返回為空的處理,寫在這里只是筆記一下。

獲取設(shè)備的信息

NSLog(@"globallyUniqueString=%@",[[NSProcessInfo processInfo] globallyUniqueString]);//全球唯一標(biāo)識(shí)
NSLog(@"uniqueIdentifie=%@",[UIDevice currentDevice].uniqueIdentifier);//唯一的標(biāo)識(shí) 可用于區(qū)分設(shè)備
NSLog(@"name=%@",[UIDevice currentDevice].name);//設(shè)備的名稱  誰(shuí)的iPad
NSLog(@"systemName=%@",[UIDevice currentDevice].systemName);//系統(tǒng)的名稱  iPhone OS
NSLog(@"systemVersion=%@",[UIDevice currentDevice].systemVersion);//設(shè)備系統(tǒng)的版本號(hào)
NSLog(@"model=%@",[UIDevice currentDevice].model);//設(shè)備的型號(hào)   iPad、iphone、ipod touch。。。
NSLog(@"localizedModel=%@",[UIDevice currentDevice].localizedModel);//本地化的模型  iPad
NSLog(@"batteryLevel=%lf",[UIDevice currentDevice].batteryLevel);//電池電量

獲取手機(jī)型號(hào)和系統(tǒng)號(hào)

/**獲取手機(jī)型號(hào)和系統(tǒng)號(hào)*/
+ (NSString*)getDeviceInfo
{
    
    NSString *phoneVersion = [[UIDevice currentDevice] systemVersion];
    NSString *deviceInfo = [NSString stringWithFormat:@"%@;%@",[self getPhoneDevice],phoneVersion];
    
    return deviceInfo;
}

獲取iPhone和iPad的機(jī)型

+ (NSString *)getPhoneDevice{
    // 需要#import "sys/utsname.h"
    struct utsname systemInfo;
    uname(&systemInfo);
    NSString *deviceString = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
     NSLog(@"型號(hào):%@", deviceString);
    //iPhone
    if ([deviceString isEqualToString:@"iPhone3,1"])    return @"iPhone 4";
    if ([deviceString isEqualToString:@"iPhone3,2"])    return @"Verizon iPhone 4";
    if ([deviceString isEqualToString:@"iPhone4,1"])    return @"iPhone 4S";
    if ([deviceString isEqualToString:@"iPhone5,1"])    return @"iPhone 5";
    if ([deviceString isEqualToString:@"iPhone5,2"])    return @"iPhone 5";
    if ([deviceString isEqualToString:@"iPhone5,3"])    return @"iPhone 5C";
    if ([deviceString isEqualToString:@"iPhone5,4"])    return @"iPhone 5C";
    if ([deviceString isEqualToString:@"iPhone6,1"])    return @"iPhone 5S";
    if ([deviceString isEqualToString:@"iPhone6,2"])    return @"iPhone 5S";
    if ([deviceString isEqualToString:@"iPhone7,1"])    return @"iPhone 6 Plus";
    if ([deviceString isEqualToString:@"iPhone7,2"])    return @"iPhone 6";
    if ([deviceString isEqualToString:@"iPhone8,1"])    return @"iPhone 6s";
    if ([deviceString isEqualToString:@"iPhone8,2"])    return @"iPhone 6s Plus";
    if ([deviceString isEqualToString:@"iPhone8,4"])    return @"iPhone SE";
    if ([deviceString isEqualToString:@"iPhone9,1"])    return @"iPhone 7";
    if ([deviceString isEqualToString:@"iPhone9,3"])    return @"iPhone 7";
    if ([deviceString isEqualToString:@"iPhone9,2"])    return @"iPhone 7 Plus";
    if ([deviceString isEqualToString:@"iPhone9,4"])    return @"iPhone 7 Plus";

    //iPad
    if ([deviceString isEqualToString:@"iPod1,1"])      return @"iPod Touch 1G";
    if ([deviceString isEqualToString:@"iPod2,1"])      return @"iPod Touch 2G";
    if ([deviceString isEqualToString:@"iPod3,1"])      return @"iPod Touch 3G";
    if ([deviceString isEqualToString:@"iPod4,1"])      return @"iPod Touch 4G";
    if ([deviceString isEqualToString:@"iPad1,1"])      return @"iPad";
    if ([deviceString isEqualToString:@"iPad2,1"])      return @"iPad 2 (WiFi)";
    if ([deviceString isEqualToString:@"iPad2,2"])      return @"iPad 2 (GSM)";
    if ([deviceString isEqualToString:@"iPad2,3"])      return @"iPad 2 (CDMA)";
    if ([deviceString isEqualToString:@"i386"])         return @"Simulator";
    if ([deviceString isEqualToString:@"x86_64"])       return @"Simulator";
    return deviceString;
}

獲取屏幕尺寸

//ios版本號(hào)
#define IOS_VERSION [[[UIDevice currentDevice] systemVersion] floatValue]
//是否為iOS 7.0以上
#define IS_IOS7 [[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0


#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)


#define IS_IPHONE_4_OR_LESS   ([UIScreen mainScreen].bounds.size.height <  568.0)
#define IS_IPHONE_5           ([UIScreen mainScreen].bounds.size.height == 568.0)
#define IS_IPHONE_6           ([UIScreen mainScreen].bounds.size.height == 667.0)
#define IS_IPHONE_6P          ([UIScreen mainScreen].bounds.size.height == 736.0)
#define IS_IPHONE_6_OR_LATER  ([UIScreen mainScreen].bounds.size.height >= 667.0)

空的處理方式

//判斷服務(wù)器返回為空
#define checkIsNULL(__X__)        (__X__) == [NSNull null] || (__X__) == nil ? @"" : [NSString stringWithFormat:@"%@", (__X__)]
-------------------------------------------------------

//字符串是否為空
#define kStringIsEmpty(str) ([str isKindOfClass:[NSNull class]] || str == nil || [str length] < 1 ? YES : NO )

//數(shù)組是否為空
#define kArrayIsEmpty(array) (array == nil || [array isKindOfClass:[NSNull class]] || array.count == 0)

//字典是否為空
#define kDictIsEmpty(dic) (dic.count == 0 || [dic isKindOfClass:[NSNull class]] || dic.allKeys == 0)

//是否是空對(duì)象
#define kObjectIsEmpty(_object) (_object == nil \
|| [_object isKindOfClass:[NSNull class]] \
|| ([_object respondsToSelector:@selector(length)] && [(NSData *)_object length] == 0) \
|| ([_object respondsToSelector:@selector(count)] && [(NSArray *)_object count] == 0))

防止循環(huán)引用

//弱引用/強(qiáng)引用
#define XLJWeakSelf(type)  __weak typeof(type) weak##type = type;
#define XLJStrongSelf(type)  __strong typeof(type) type = weak##type;

如果哪里寫的有問題,請(qǐng)及時(shí)issues me,以便我能更快的進(jìn)行更新修復(fù)。
Email: marlonxlj@163.com
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,012評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評(píng)論 19 139
  • 親愛的男孩: 你現(xiàn)在還好嗎?好久不見。與你相識(shí)已經(jīng)五年多的時(shí)間,我用了四年半的時(shí)間來將你忘記。我忘記了第一次與你相...
    六年等風(fēng)來閱讀 185評(píng)論 0 0
  • 也許,我們都走倦了, 都回到塵世的臺(tái)上, 扮兩個(gè)過路的人, 相遇而不相識(shí),相見而無話說, 重新排演,離離合合的身世...
    Yummy灬喵閱讀 268評(píng)論 0 0
  • 方法一 三十秒法則 這一條是我的痛,以前關(guān)鍵時(shí)刻找別人說事,往往前幾句話沒有抓住重點(diǎn),讓對(duì)方不知所云。意識(shí)到此問題...
    Cicily_閱讀 406評(píng)論 0 2

友情鏈接更多精彩內(nèi)容