Я использую Parse для настройки пар пользователей и сохранения matchedRelation в классе UserRelations. Однако я обнаружил странную проблему, когда при добавлении PFObject в массив PFObject все элементы в этом массиве будут заменены, в то время как при использовании AnyObject Array это совершенно нормально. Пожалуйста, помогите мне выяснить, что не так.
query.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
if error == nil {
var pairRelation = PFObject (className: "UserRelations")
var pairRelations = [PFObject]()
var testArray = [AnyObject]()
for object in objects {
pairRelation.setObject(object.username, forKey: "toUser")
pairRelation.setObject(PFUser.currentUser()!, forKey: "fromUser")
pairRelation.setObject(true, forKey: "isMatched")
pairRelations.append(pairRelation)
testArray.append(object.username)
println("After append the results of the Array is: \(pairRelations)")
println("\nAfter append the results of the test Array is: \(testArray)")
}
}
}
Вывод для первых трех совпадений показан здесь:
After append the results of the Array is: [<UserRelations: 0x7fe22b0713c0, objectId: new, localId: (null)> {
fromUser = "<PFUser: 0x7fe22b127670, objectId: 3WXg5FUEsE>";
isMatched = 1;
toUser = "[email protected]";}, <UserRelations: 0x7fe22b0713c0, objectId: new, localId: (null)> {
fromUser = "<PFUser: 0x7fe22b127670, objectId: 3WXg5FUEsE>";
isMatched = 1;
toUser = "[email protected]";}, <UserRelations: 0x7fe22b0713c0, objectId: new, localId: (null)> {
fromUser = "<PFUser: 0x7fe22b127670, objectId: 3WXg5FUEsE>";
isMatched = 1;
toUser = "[email protected]";}]
After append the results of the test Array is:
[[email protected], [email protected], [email protected]]
Таким образом, массив PFObject получил одни и те же элементы после добавления, в то время как массив пыльников получил всех трех разных пользователей. Спасибо за любой комментарий/помощь!
var pairRelation = PFObject (className: "UserRelations")
внутрь циклаfor object in objects
. - person Kyle H   schedule 21.07.2015setObject
, он соответственно обновит объект, но во второй и третий раз он обновит один и тот же объект. Под капотом массив будет содержать указатели на объекты, а не на сам объект, а в вашем случае 3 одинаковых указателя. - person Mattias   schedule 21.07.2015