2017-05-21 3 views
1

したがって、同じiCloudコンテナを使用する2つのアプリケーションを開発しています。iOS AppカスタムiCloudコンテナを使用しません

私は、Xcodeとappleのオンラインドキュメントに示されているように、すべての手順に従っています。アプリケーションにiCloudの機能を追加し、CloudKitのチェックボックスをチェックし、作業したいカスタムコンテナを選択しました(明らかに両方のアプリケーションで同じです)。

アプリケーションがエンタイトルメントファイルのiCloudコンテナ識別子を変更しました。これは、すべて正常に動作することを示すはずです。しかし、私がアプリケーションを使用してコンテナの名前を印刷するたびに、各アプリケーションのデフォルトコンテナの名前が表示されます。両方のアプリケーションのための

は、機能の画面は次のようになります。 enter image description here

私は、すべてのクラウドトラフィックを管理するために、一つのオブジェクト、CloudKitControllerを作成しました。私は、アプリが起動残業それをintialize、このような変数を設定します。

var container:  CKContainer 
var publicDB:  CKDatabase 
let privateDB:  CKDatabase 
var delegate:  CloudKitControllerDelegate? 

override init() { 
     container = CKContainer.default() 
     print(container.containerIdentifier) 
     //this prints the name of the default container for the project 
     publicDB = container.publicCloudDatabase 
     privateDB = container.privateCloudDatabase 
    } 

私も開発者ポータルに行って、私が使用するコンテナは、両方のアプリケーションが関連付けられている唯一のコンテナであることを確認しました。どちらもうまくいきませんでした。

私の質問は同じデベロッパーアカウントとプロビジョニングプロファイルの2つのアプリケーションを1つのiCloudコンテナで使用するにはどうすればよいですか?

+0

[編集]あなたの質問には、両方のアプリで 'CKContainer'にアクセスする方法を示す関連コードを入力してください。 – rmaddy

+0

完了!他の情報が必要ですか?私はもっ​​とそれを提供することを嬉しく思います! – Joris416

答えて

2

あなたは、特定の識別子を持つ特定のコンテナで作業したいと述べました。しかし、あなたが持っているコードは、特にアプリケーションのデフォルトコンテナにアクセスしています。それはあなたが望むものではありません。

変更:

container = CKContainer.default() 

へ:

container = CKContainer(identifier: "your shared container id") 

詳細については、CKContainerクラスのドキュメントを参照してください。

+0

私は、アプリケーションの機能画面でコンテナを選択すると自動的にそのコンテナをデフォルトのコンテナに切り替えると推測しました。ありがとう! – Joris416

+0

アプリはデフォルトのコンテナと任意の数の特定のコンテナを同時に使用できます。デフォルトのものが魔法のように他の特定のコンテナを参照すると、悪いことになります。 – rmaddy

関連する問題