2016-03-23 9 views

答えて

11

TARGET_IPHONE_SIMULATOR Utilのクラスを作成します。 あなたがしたいことは次のようなものでしょうか?

#if arch(i386) || arch(x86_64) 
let device = false 
let RealmDB = try! Realm(path: "/Users/Admin/Desktop/realm/Realm.realm") 
#else 
let device = true 
let RealmDB = try! Realm() 
#endif 
+0

今それは動作します!どうもありがとうございました! – alexey

+0

アーキテクチャをシミュレータのショートカットとして使用しないでください。 – russbishop

0

この問題の詳しい説明はhearです。 私はthisアプローチ使用しています:

struct Platform { 
     static let isSimulator: Bool = { 
      var isSim = false 
      #if arch(i386) || arch(x86_64) 
       isSim = true 
      #endif 
      return isSim 
     }() 
    } 

    // Elsewhere... 

    if Platform.isSimulator { 
     // Do one thing 
    } 
    else { 
     // Do the other 
    } 

またはマクロはスウィフトでは動作しません

class SimulatorUtility 
{ 

    class var isRunningSimulator: Bool 
    { 
     get 
     { 
      return TARGET_OS_SIMULATOR != 0// for Xcode 7 
     } 
    } 
} 
+0

お返事ありがとうございます!ということは、もし私が "Platform.isSimulator"をいくつかのクラスの中に置くことができるということです。しかし、 "RealmSwiftのインポート"の直後にトップレベルの "RealmDBをしましょう"という定数を設定する必要があります。 – alexey

+0

アーキテクチャをシミュレータのショートカットとして使用しないでください。 – russbishop

3

この投稿を参照してください。これはそれを行うには正しい方法であり、それはよく

https://samsymons.com/blog/detecting-simulator-builds-in-swift/

を説明しています基本的には、シミュレータでの実行時に設定することができます(多分「SIMULATOR」)を好きなようにという名前の変数を定義します。 ターゲットのビルド設定で、Active Compilation Conditions - >Debug、次に(+)の順に選択し、ドロップダウンリストでAny iOS Simulator SDKを選択し、変数を追加します。 Xcodeの9.3+スウィフトのよう

次に、あなたのコード内の

var isSimulated = false 
#if SIMULATOR 
    isSimulated = true // or your code 
#endif 
0

今あなたがシミュレータ用に構築しているかどうかを確認するためにif #targetEnvironment(simulator)をサポートしています。

シミュレータのショートカットとしてアーキテクチャの使用を中止してください。

// ObjC/C: 
#if TARGET_OS_SIMULATOR 
    // for sim only 
#else 
    // for device 
#endif 


// Swift: 
#if targetEnvironment(simulator) 
    // for sim only 
#else 
    // for device 
#endif