IT工房くまや

通称くまが運営するIT工房サイト

CloudKit iCloudにサインインできない

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. で始まらなければいけないということでした。