2014年11月6日木曜日

CloudKitハマりどころその3

おはようございます。

さて、めっちゃお手軽ですよ〜という顔をしておいてめっちゃ面倒くさい事連発のCloudkitさんですが、まだまだハマりどころがございます。

まずはクエリーです。Cloudkitからデータを取ってくる時は、


CKDatabase.performQuery()

を使います。しかしこいつがちょっと曲者で、実は全件取ってきてくれません。
正確に言いますと100件までしか取ってきてくれません。ちょっと前まで400件取ってきてくれてたのですがいつのまにか100件になりました。

実はちゃんとリファレンスにも書いてありました。

------
Do not use this method when the number of returned records is potentially more than a few hundred records. 
but to get the entire set of records you must use a CKQueryOperation object instead

-------

ということで、たくさんレコードを取得したい場合やページング処理を行いたい場合なんかはCKQueryOperationを使えとの事です。こちらの使い方はまた調査してみます。

次はRecordTypeのセキュリティです。
いつのまにか、実機に入れたアプリからDefaultContainer以外のデータベースへの書き込みが失敗するようになりました。なんでかなーと思っていたらいつのまにかダッシュボードが下のような感じに変更されていたようです。















RecordTypesの右上にSecurityという設定項目が、、、こいつのAuthenticatedのWriteにチェックをいれてやらないとPublicであっても実機からの別コンテナーへの書き込みがエラーとなるようです。
★端末にiCloudの設定をしていない場合は、このチェックを入れていてもおそらくエラーとなります。


というわけで、まだまだ出てきそうですがとりあえずは読み書きは出来るようにはなっております。

ではまたごきげんよう。。