2016-08-17 8 views
2

私はプロジェクト内に2つの内線があります。そして私は1つの拡張で変数を設定し、その変数の更新された値を別の拡張から読みたいと思います。私はCoredataを使いたくありません。Coredataを使用せずにswiftを使用してIOS内の2つの内線番号間で変数値を共有する方法

現在、私は共通のココアタッチフレームワークを使用しており、両方の拡張でそのフレームワークをインポートしています。私は、共通のフレームワークで定義されたクラスの変数の1つにゲッターとセッターを定義しました。ただし、1つの内線番号で変更された値は別の内線番号に表示されません。

何か考えてみてください ありがとう

答えて

4

通常、NSUserDefaults.standardUserDefaults()を使用して1つのアプリケーションにデータを格納します。

この場合、アプリケーショングループを使用してデータを共有します。

共有NSUserDefaultsデータ

次の手順を使用して、あなたの設定でアプリのグループを追加します。プロジェクトナビゲータで

  1. は(一番上にする必要があります)* .xcodeprojファイルをクリックしてください。
  2. Project Navigatorの右側で、Project and Targetsを探します。ターゲットの下で、あなたのプライマリターゲットをクリックします(ターゲットの下にある最初のものでなければなりません)。
  3. 上部に向かって、Capabilitiesタブをクリックします。
  4. App Groupsセクションで、右にあるスイッチをクリックしてApp Groupsをオンにします。
  5. +ボタンをクリックし、group.com.company.myAppという名前のアプリケーショングループを追加します。
  6. 他のアプリの同じ場所に移動すると、このグループを選択できるようになります。この共有データを使用するアプリごとにこのグループをオンにします。

注:あなたは、アップルの開発者向けポータル(あなたの証明書、識別子、デバイスおよびプロビジョニングプロファイルの全てを示しアップルのWebサイト)に移動し、識別子に行けば>アプリケーショングループあなたは、この新しいアプリケーショングループが表示されるはずです。

ストアデータ:

var userDefaults = NSUserDefaults(suiteName: "group.com.company.myApp") 
userDefaults!.setObject("user12345", forKey: "userId") 
userDefaults!.synchronize() 

データを取得します:

var userDefaults = NSUserDefaults(suiteName: "group.com.company.myApp") 
if let testUserId = userDefaults?.objectForKey("userId") as? String { 
    print("User Id: \(testUserId)") 
} 
+0

yeah..thisを完璧です –

関連する問題