1

レコードにいくつかの異なる属性を割り当てようとしています。

日付と名前は正常に機能しています。別のレコードへの参照である Avatar も正常に機能します。しかし、その後、ユーザーへの参照を割り当てようとすると、画面の瞬間に頭をぶつけます。これが私のコードです:

var avatarID : CKRecordID!
var userID : CKRecordID!

//avatarID has been assigned value in another function
daMainUser.setObject(CKReference(recordID: avatarID! as CKRecordID, action: CKReferenceAction.None), forKey: "avatar")
println("this is avatarID: \(avatarID!)")

containerY.fetchUserRecordIDWithCompletionHandler{
            userRecordID, error in
            if error != nil {
                println("error")
            } else {
                println("gettin close")
                self.userID = userRecordID
                println("this is userID: \(self.userID!)")
                daMainUser.setObject(CKReference(recordID: self.userID! as CKRecordID, action: CKReferenceAction.None), forKey: "ownerOfThat")
                }
            }
        publicDatabase.saveRecord(daMainUser) {
            record, error in
            if error != nil {
                println(error.localizedDescription)
            } else {
                println(record.objectForKey("nickName") as String + " recorded")
            }
        }

daMainUser を保存して Apple ダッシュボードを確認すると、「avatar」参照は正常に保存されていますが、「ownerOfThat」は保存されていません。コンソールから得られるものは次のとおりです。

this is avatarID: <CKRecordID: 0x7a83d3d0; 79CE1EDC-593D-4AE0-8433-8488F857A302:(_defaultZone:__defaultOwner__)>
gettin close
this is userID: <CKRecordID: 0x7a863910; _8a15e8e6138ba234b62f25cfd3eeb66e:(_defaultZone:__defaultOwner__)>
John Doe recorded

そのため、userID と別のレコードの ID は同じ種類の ID ではないと思います。しかし、私はその理由と何をすべきかを知りません。前もって感謝します

4

1 に答える 1

1

括弧が間違っていると思います。そのはず:

var avatarID : CKRecordID!
var userID : CKRecordID!

//avatarID has been assigned value in another function
daMainUser.setObject(CKReference(recordID: avatarID! as CKRecordID, action: CKReferenceAction.None), forKey: "avatar")
println("this is avatarID: \(avatarID!)")

containerY.fetchUserRecordIDWithCompletionHandler{
            userRecordID, error in
            if error != nil {
                println("error")
            } else {
                println("gettin close")
                self.userID = userRecordID
                println("this is userID: \(self.userID!)")
                daMainUser.setObject(CKReference(recordID: self.userID! as CKRecordID, action: CKReferenceAction.None), forKey: "ownerOfThat")
            }
        publicDatabase.saveRecord(daMainUser) {
            record, error in
            if error != nil {
                println(error.localizedDescription)
            } else {
                println(record.objectForKey("nickName") as String + " recorded")
            }
        }
     }

ここで、取得する前にレコードを保存します。

于 2015-02-16T06:00:32.340 に答える