CloudKit: N から 1 のレコードを参照してみました

CloudKit で relation の定義の仕方がわかったので、今度は、N のテーブルから 1 のテーブルを参照する方法を試してみました。

Apple 謹製のドキュメントはすごく素性がよくて(当たり前?)、その通りに作ればその通りに動きました。ただ、これ、実装するとなるとかなりキツイね。理由は手順を追うとわかります。

  1. まず、N テーブルのレコードを query して recordID を特定。
  2. 次に、そのレコードに定義してある Referene 型のフィールドの値を得る。
  3. それを手掛かりとして、1 のレコードが定まるので、フィールドの値を得る。

正直、CloudKit 使わないで、自 server に仕組みを素で書くのと、手間は大して変わりません。以前 4D 使ってプログラム書いている時とは雲泥の差。なんか、PythonCGI としてプログラムするのと大差ない。いや、SQLite3 なら、フィールドに色々制約をつけられるので、恩恵を受けられるけれども、CloudKit はそんな仕組みがないので、その面では厄介か。なんでこんなこと言うかといえば、CoreData の素晴らしさはどこ行ったんですか?と言うことを確認したい。

で、さらに、サーバーとやりとりする都合、1 で block を使い、さらに、3 のために block を使うという、block の中に block を書く形になるので、変態的な code になってしまう関係上、こんな仕組みやめて自 server で書いちゃった方がむしろ判読性?可読性?メンテナンス性?は高いんじゃないかと思いました。

と言いつつも、自 server を建てるとなると、それなりに費用がかかりますので、そんなお金はない当方としては、これを使うしかないなぁと。

あと、まだよくわかんないけど、簡単に重複したレコードを作れちゃうのは、そうならないような配慮も自分でしないとならないからなのでしょうか。RDB なら普通にある機能なんだけど、自分で実装するとなると・・・きついね。

ふぅぅぅぅ。

 

さて、次は、マスターにデータを一括して登録するにはどうするのか・・・ファイルアップロードして一括登録したかったんだけど、仕組みが・・・ない? アプリから作る感じなのかなぁ・・・