問題タブ [ckrecord]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - CKRecords をある CKContainer から別の CKContainer に移動できますか?
Apple ID を変更する必要がありましたが、古い Apple ID のコンテナーには、本番環境で多数の重要な記録が保管されています。
依存関係とレコード作成者を維持しながらエクスポートできますか?
swift - Swift で CKRecord に添え字を定義するときのスタック オーバーフロー
この質問CKRecord
は、Swift で添え字を使用できるかどうかを尋ねます。質問者が望んでいたことを行う方法はすでに知っていましたが、それを順列するたびにスタックオーバーフローが発生します。
ゲッターでスタックオーバーフローが発生します。(セッターは試したことがないのでそちらでも発生するかもしれません。) objectForKey:
、objectForKeyedSubscript:
、 で実装してみましvalueForKey:
た。すべてが同じ結果を生成します: スタック オーバーフロー。
CKRecord
確かにObjective-Cで書かれているので、これは非常に奇妙です。Swift のsubscript
メソッドを再帰的に呼び出すのはなぜですか? 意味がない。Nate Cook は、質問者への回答の中で、なぜ Swift が自動的にブリッジしないのか疑問に思っていobjectForKeyedSubscript:
ます。それを行うためのコードが完全に焼き付けられていない可能性がありますが、この問題を引き起こしています。を持つ別のクラスで試してみる必要がありobjectForKeyedSubscript:
ます。
アップデート
objectForKeyedSubscript:
通常はブリッジされているようです。適切なメソッドを使用して Objective-C でクラスを作成し、それをブリッジング ヘッダーに追加すると、インデクサーがそこにあり、問題なくコンパイルされました。さらに良いことに、スタックオーバーフローなしで機能しました。
これは、 で非常に異常なことが起こっていることを意味しCKRecord
ます。
理論
Swift で、 aをキーとしてメソッドを継承しNSObject
て実装するクラスを作成すると、 this になります。(「純粋な Swift」クラスの場合、これは当てはまらないと思います。) これは、Swift クラスを Objective-C にインポートし、そこにあることを確認することで確認できます。subscript
String
objectForKeyedSubscript:
objectForKeyedSubscript:
からCKRecord
派生しているためNSObject
、実装subscript
するとデフォルトの実装がオーバーライドされます。さらに、objectForKey:
and valueForKey:
all 最終的に呼び出された のように見えますがobjectForKeyedSubscript:
、その結果 (読み取り: "is the same as") が呼び出されsubscript
、スタック オーバーフローが発生します。
これが、スタック オーバーフローが発生する理由を説明している可能性があります。が自動的にブリッジされなかった理由はまだ説明されていませんobjectForKeyedSubscript:
が、おそらく、 の定義がsetObject:forKeyedSubscript:
正規のものとはわずかに異なる型シグネチャを持っているためです- (void)setObject:(id <CKRecordValue>)object forKeyedSubscript:(NSString *)key;
。これは Objective-C と何の違いもありませんが、「ブリッジング コード」につまずく可能性があります。結局のところ、Swift はかなり新しいものです。
ios - CloudKit を使用してデータを変更する
CloudKit で変更したいデータがあります。私はこの質問 ( Saving Modified Data in CloudKit ) を見つけ、それは CKModifyRecordsOperation を指していますが、これに慣れていないので、より多くのガイダンスを探しています。私は自分のオブジェクトを次のように設定しています:
すべてではなく 1 つのレコードのみを変更する場合でも、CKModifyRecordsOperation を呼び出しますか? これがどのように行われるかの手がかりはありますか?私は使用してきましたが[self.cloudManager saveRecord:object];
、レコードを変更すると、これは機能しません。
ios8 - プライベート データベース CloudKit で RecordType のすべての名前を取得する方法
すべてのデータを読み取るために、Cloud Kit のプライベート データベースですべてのレコード タイプの名前を持つ配列を取得する方法を知りたいですか?
私は自分のデータを保存します:
私は自分のデータを読みました:
次のような別のプロパティで別のレコードを保存したいと思います。
保存した後にすべてのレコードを読み取るために Favoris1 と Favoris2 を含む配列を作成するにはどうすればよいですか?
ios - CloudKit: 特定のレコード タイプのすべてのレコードをフェッチしますか?
現在、アプリにCloudKitをセットアップしているので、以下のコードを使用して新しいレコードを追加しています。
ただし、同じレコード タイプ「文字列」のすべてのレコードをフェッチし、NSArray にコンパイルされたレコードを返すことができるようにしたいと考えています。どうすればそれを行うことができますか?現在、私が理解しているのは、recordID を使用して各レコードを個別に取得する方法だけです。これは面倒です。もっと簡単な方法があるはずです。