

swiftでiCloudを使ったアプリを作っています。

MyTextFieldという名前のText Fieldに入力した文字を以下のコードでiCloudのkey-valueに保存します。

[code]

    let vStore = NSUbiquitousKeyValueStore.default()
    if let str = MyTextField.text {
            vStore.set(str, forKey: "inputText")
            vStore.synchronize()
    }
    
[/code]

またiCloudのkey-valueから値を取得するのに

[code]

    let vStore = NSUbiquitousKeyValueStore.default()
    if let str = vStore.string(forKey: "inputText") {
        print("\(str))
    }
    
[/code]

で行いました。

一つのiPhone内では問題なくiCloudに保存して、値の読み込みも行えました。  
しかし、同じアプリを異なる2つのiPhoneにインストールを行い同じApple IDを使用を試してみました。  
片方が保存したkey-valueを、もう片方が読み出したときに読み出せません。  
それぞれ独立している挙動をしているようです。

Key-valueは同じApple IDを使用していてもデバイスが異なれば、それぞれ独立しているのでしょうか？  
ご存知の方、ご教示お願いします。


CC BY-SA 3.0
2017-06-11T13:53:38.570
35488
2020-06-22T06:05:25.593
8593
question
swift iphone icloud
iCloudのKey-valueはデバイスごとに独立しているのか？


NSUbiquitousKeyValueStoreを複数のアプリで共有するにはEntitlements Plistファイルに同じ
iCloudコンテナIDを設定する必要があります。

EntitlementsファイルはXcodeが自動的に作成して、アプリのバンドルIDが自動的に設定されています。複数のアプリで共有するにはその値を、いずれかのアプリのIDに合わせて変更します。

詳しくは公式ドキュメントの「Configuring Common Key-Value Storage for Multiple
Apps」セクションをご覧ください。

<https://developer.apple.com/library/content/documentation/General/Conceptual/iCloudDesignGuide/Chapters/iCloudFundametals.html#//apple_ref/doc/uid/TP40012094-CH6-SW26>


CC BY-SA 3.0
2017-06-12T20:22:55.547
35517
2017-06-12T20:22:55.547
5519
35488
answer