アプリ グループを使用して共有データを保存できますが、組み込みの型でのみこれを実行しようとしました。
独自のクラスを保存しようとしている場合は、NSKeyedArchiver や NSCoding などを確認する必要がある場合があります (こちらを参照してください)。
組み込み型を使用する方法が見つかった場合は、次のようにアプリ グループを使用できます。
複数のアプリ間で NSUserDefaults データを共有する
アプリと拡張機能の間、または 2 つのアプリ間で既定値を共有するには、次の手順を使用して設定にアプリ グループを追加する必要があります。
- Project Navigator で、*.xcodeproj ファイル (一番上にあるはずです) をクリックします。
- Project Navigator の右側で、Project と Targets を探します。ターゲットの下で、プライマリ ターゲットをクリックします ([ターゲット] の下で最初にある必要があります)。
- 上部に向かって、[機能] タブをクリックします。
- [アプリ グループ] セクションで、右側のスイッチをクリックしてアプリ グループをオンにします。
- + ボタンをクリックして、group.com.company.myAppという名前のアプリ グループを追加します。
- 他のアプリで同じ場所に移動すると、このグループが選択できるようになります。この共有データを使用するアプリごとに、このグループをオンにします。
注: Apple Developer Portal (すべての証明書、識別子、デバイス、およびプロビジョニング プロファイルを表示する Apple 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)")
}