2016-07-15 1 views
-1

バージョンごとにデバイスの変数を作成しようとしていますが、私のコントロールは常にelseの部分に行きます。私のiOSのは、私はそれを見ることができ、here提案が、私は、実行時にチェックし、ブレークポイントを使用していた場合Swift2.xなぜプリプロセッサディレクティブが動作しないのですか

#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000 
    var addressBookRef : CNContactStore? = nil 
#else 
    var addressBookRef : ABAddressBook? = nil 
#endif 

に服用していないdefinedとして私もこれを試してみた9.3

#if os(iOS) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000 
    var addressBookRef : CNContactStore? = nil 
#else 
    var addressBookRef : ABAddressBook? = nil 
#endif 

です私のコントロールは常にelse部分と変数addressBookRefに行くのはABAddressBookです。

は、実行時にこれをチェックする必要があり、私はあなたがディレクティブでのiOSのバージョンを確認することはできません

+1

あなたが使用している場合**#の場合**忘れないでください** endif ** – iSashok

+0

私はそれをしています、申し訳ありません、私はここにそれを追加しませんでした。忘れてしまった。私に更新させてください –

+3

このhttp://nshipster.com/swift-system-version-checking/を参照してください – Santosh

答えて

3

をやって何が間違って下さい提案します。

あなたはiOSの8.0を使用しているか、後であなたはこれが使用できる場合:

let os = NSProcessInfo().operatingSystemVersion 
switch (os.majorVersion, os.minorVersion, os.patchVersion) { 
case (8, 0, _): 
    // 8.0.0 and < 8.1.0 
case (8, _, _): 
    // 8.1.0 and < 9.0 
case (9, _, _): 
    // 9.0.0 
default: 
    // 
} 

あなたはまた、また、iOSの7上で動作するどのUIDevice.currentDevice().systemVersionを使用することができます。

switch UIDevice.currentDevice().systemVersion.compare("8.0.0", options: NSStringCompareOptions.NumericSearch) { 
case .OrderedSame, .OrderedDescending: 
    // >= 8.0 
case .OrderedAscending: 
    // < 8.0 
} 
関連する問題