2016-09-20 2 views
0
#define kIOS8_OR_LATER \ 
([[[UIDevice currentDevice] systemVersion] compare:@"8.0"] != NSOrderedAscending) 

なぜiOS 8.0と10の比較が機能しないのですか?iOS 10のsystemVersionを比較できません

if (kIOS8_OR_LATER) { 
    NSLog(@"1"); 
} else { 
    NSLog(@"0"); 
} 

デバイス:

  • シミュレータIOSの10(14A345)

  • 実デバイスiPhone 6S IOSの10.0.1(14A403)

のXcode:

  • バージョン8.0(8A218a)

コンソールが0のログを保持しますが、通常の文字列の比較は、一度に1つの文字を見てのiOS 9.

+0

'@" 10 "'はアルファベット順に '@" 8 "の前に来ます。英数字の比較方法を使用する必要があります。 – Fogmeister

+0

このリンクもご覧くださいhttps://github.com/ChenYilong/iOS10AdaptationTips/#ios-version-checking – Rishab

答えて

4

で正常に動作します。 1は、8より前に注文されます。だから、比較数値を行う必要があります。

#define kIOS8_OR_LATER \ 
    ([[[UIDevice currentDevice] systemVersion] compare:@"8.0" options:NSNumericSearch] != NSOrderedAscending) 

次に比較は810の間にあります。

関連する問題