CloudKitを学習しようとサンプルプログラムをダウンロードしたり、参考になるサイトをまねてみたりして、実行させるとなぜか
「iCloudにサインインしてからにして」
みたいなメッセージが出てしまう。iPhoneでも、macでもiCloudにサインインして、driveを有効にしているのに、なぜなのか。途方に暮れてしまいました。こういう時はいつも、Apple Developer Ducumentationサイトを確認することにしています。CloudKitを一つ一つ見ていくと、Share Recordsにサンプルプログラムがありました。今まで見つけられなかったサンプルプログラムです。こういう時は、宝物でも見つけた気分になります。
早速ダウンロードして、実行して見ます。
「iCloudにサインインしてからにして」
みたいなメッセージがまた出てしまう。
今度は、ひとつひとつコードを見ていきます。
「iCloudのcontainer identifierが”iCloud.<bundle identifier>”でなければcontainer作る時は
CKContainer(identifier: <your container ID>)
を使え!!」(もとは英語です。結構意訳してます。)
いままで見なかったコメントでした。早速変更して・・・。
今度はエラー
「CloudKitShare.entitlementsがどうたらこうたら」
ちょっとイラっときて、ファイルからCloudKitShare.entitlementsを消してあげました。再度Signing & CapabilitiesでiCloudのContainersを設定して・・・。CloudKitShare.entitlementsはできません。
「エラーが消えてる。!」
ダメもとで、早速実行。
「うごいた。」
結局、コメントをよく読むと、Bundle Identifierの頭に「iCloud.」をつけたContainerであれば、
let container = CKContainer.defualt()
Bundle Identifierの頭に「iCloud.」をつけたContainerでなければ、
let container = CKContainer(identifier: <your container ID>)
にする。ただし、<your container ID>の頭は iCloud. で始まらなければいけないということでした。