2

ユーザーがレコードを作成できるアプリを設定しています。彼/彼女がチャットルームのオーナーだとしましょう。そのため、チャットルームの記録には「admin」という属性があります。この属性は、所有者の ID である参照を取ります。

これが私が試したものです:

CKContainer.defaultContainer().fetchUserRecordIDWithCompletionHandler({
            userRecordID, error in
            if error != nil {
                println("caca")
            } else {
                println("gettin close")
                let UserRecordIDToStore = NSKeyedArchiver.archivedDataWithRootObject(userRecordID)
                let iDString = userRecordID.recordName as String
                daMainUser.setObject(iDString, forKey: "user")
            }
            })

上記のように iDString を渡し、レコード (部屋) を作成すると、その管理参照は空になります。iDString を文字列としてキャストしたかどうか。

userRecordID を直接渡すと、エラーが発生します:「CKRecordID」は「CKRecordValue」と同一ではありません

私はいたるところを見てきましたが、これに関する詳細情報を見つけることができません。

どんな助けでも大歓迎です。君たちありがとう!

4

1 に答える 1

3

ユーザー フィールドが CKReference フィールドとして設定されている場合は、次のように設定する必要があります。

daMainUser.setObject(CKReference(recordID: userRecordID, action: CKReferenceAction.None), forKey: "user")

あなたの場合、既に持っているので、recordID を作成する必要はありません。それ以外の場合は、次のようなもので作成する必要がありました:

var recordID = CKRecordID(recordName: userRecordID.recordName)
于 2015-02-12T07:12:42.080 に答える