在 Swift 中获取与解析云代码错误的关系
Getting Relations w/ Parse Cloud Code Errors In Swift
我有云代码可以在其他用户访问他们的朋友页面时搜索用户与其他用户的关系。
我遇到的问题是填充我拥有的存储用户朋友信息的 PFObjects 数组,以便它可以显示在表视图中。
这是我的云代码:
Parse.Cloud.define("getFriends", function(request, response) {
var userId = request.params.UserKey;
var query = new Parse.Query(Parse.User);
query.get(userId, {
success: function(foundCurrentUser) {
var currentUser = foundCurrentUser;
var relation = currentUser.relation("Friends");
var getRelationQuery = relation.query();
getRelationQuery.find().then(function(results){
response.success(results);
});
},
error: function(error) {
response.error(error);
}
});
});
我检查了我的日志并得到了正确的响应。它包含 JSON 中的正确数据。
问题来了。 iOS 应用程序中的云查询让我感到悲伤。
let currentUser: PFUser = PFUser.currentUser()!
let params = NSMutableDictionary()
params.setObject(PFUser.currentUser()!.objectId!, forKey: "UserKey")
PFCloud.callFunctionInBackground("getFriends", withParameters: params as [NSObject : AnyObject], block: {
(object:AnyObject?, error: NSError?) -> Void in
if error == nil {
self.currentUserFriendList.append(object as! PFObject)
}
else
{
println("didnt retrieve the carpoolers")
}
})
在代码行我得到一个问题是 self.currentUserFriendList.append(object as!! PFObject)
错误 Could not cast value of type '__NSArrayM' (0x111cd8448) to 'PFObject' (0x10fd8a818).
我想使用
for object in objects {
self.currentUserFriendList.append(object as! PFObject)
}
但该块不是 object:[AnyObject]
当我打印对象时,我得到了包含在 Optional 中的正确关系,就像这样
Optional((
"<PFUser: 0x7fa5db4a6de0, objectId: 1FLleawAQz, localId: (null)> {\n Friends = \"<PFRelation: 0x7fa5db47b1a0, 0x0.(null) -> _User>\";\n email = \"test@test.com\";\n fullName = \"Tester \";\n profilePicture = \"<PFFile: 0x7fa5db4a0140>\";\n username = \"test@test.com\";\n}",
"<PFUser: 0x7fa5db47d5f0, objectId: nqFBQYIVjD, localId: (null)> {\n Friends = \"<PFRelation: 0x7fa5db5c97b0, 0x0.(null) -> _User>\";\n email = \"test2@test.com\";\n fullName = test2;\n profilePicture = \"<PFFile: 0x7fa5db554400>\";\n username = \"test2@test.com\";\n}"
))
我能够准确输出我想要的响应并将其附加到我的 PFObjects 数组中,就像这样。
if error == nil {
let objects = response as! [PFObject]
for object in objects as [PFObject] {
self.currentUserFriendList.append(object as PFObject)
println("\(object)")
}
我有云代码可以在其他用户访问他们的朋友页面时搜索用户与其他用户的关系。
我遇到的问题是填充我拥有的存储用户朋友信息的 PFObjects 数组,以便它可以显示在表视图中。
这是我的云代码:
Parse.Cloud.define("getFriends", function(request, response) {
var userId = request.params.UserKey;
var query = new Parse.Query(Parse.User);
query.get(userId, {
success: function(foundCurrentUser) {
var currentUser = foundCurrentUser;
var relation = currentUser.relation("Friends");
var getRelationQuery = relation.query();
getRelationQuery.find().then(function(results){
response.success(results);
});
},
error: function(error) {
response.error(error);
}
});
});
我检查了我的日志并得到了正确的响应。它包含 JSON 中的正确数据。
问题来了。 iOS 应用程序中的云查询让我感到悲伤。
let currentUser: PFUser = PFUser.currentUser()!
let params = NSMutableDictionary()
params.setObject(PFUser.currentUser()!.objectId!, forKey: "UserKey")
PFCloud.callFunctionInBackground("getFriends", withParameters: params as [NSObject : AnyObject], block: {
(object:AnyObject?, error: NSError?) -> Void in
if error == nil {
self.currentUserFriendList.append(object as! PFObject)
}
else
{
println("didnt retrieve the carpoolers")
}
})
在代码行我得到一个问题是 self.currentUserFriendList.append(object as!! PFObject)
错误 Could not cast value of type '__NSArrayM' (0x111cd8448) to 'PFObject' (0x10fd8a818).
我想使用
for object in objects {
self.currentUserFriendList.append(object as! PFObject)
}
但该块不是 object:[AnyObject]
当我打印对象时,我得到了包含在 Optional 中的正确关系,就像这样
Optional((
"<PFUser: 0x7fa5db4a6de0, objectId: 1FLleawAQz, localId: (null)> {\n Friends = \"<PFRelation: 0x7fa5db47b1a0, 0x0.(null) -> _User>\";\n email = \"test@test.com\";\n fullName = \"Tester \";\n profilePicture = \"<PFFile: 0x7fa5db4a0140>\";\n username = \"test@test.com\";\n}",
"<PFUser: 0x7fa5db47d5f0, objectId: nqFBQYIVjD, localId: (null)> {\n Friends = \"<PFRelation: 0x7fa5db5c97b0, 0x0.(null) -> _User>\";\n email = \"test2@test.com\";\n fullName = test2;\n profilePicture = \"<PFFile: 0x7fa5db554400>\";\n username = \"test2@test.com\";\n}"
))
我能够准确输出我想要的响应并将其附加到我的 PFObjects 数组中,就像这样。
if error == nil {
let objects = response as! [PFObject]
for object in objects as [PFObject] {
self.currentUserFriendList.append(object as PFObject)
println("\(object)")
}