I am having trouble understanding why the following code is replacing all of my array elements with the latest information when I am trying to just append it.
I have the following class:
class usersAvailable {
var username = String()
var userAvatar = UIImage()
}
I have the following variables defined to use the class:
//the array which will hold users available to follow
var usersAvailableArray = [usersAvailable]()
var aUser = usersAvailable()
to check my sanity I also have declared a 'regular' array to see if I am getting the right values:
var usersArray:[[String]] = [["",""]]
when i execute the following code:
func getAllUsers() {
usersAvailableArray.removeAll(keepCapacity: true)
usersArray.removeAll(keepCapacity: true)
var query = PFQuery(className: "_User")
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
for object in objects! {
self.aUser.username = object["username"] as! String
println("aUser.username before append: \(self.aUser.username)")
println(self.aUser)
self.usersAvailableArray.append(self.aUser)
self.usersArray.append([self.aUser.username])
println("first element of usersAvailableArray: \(self.usersAvailableArray.first?.username)")
println("last element of usersAvailableArray: \(self.usersAvailableArray.last?.username)")
println("number of elements currently in usersAvailableArray: \(self.usersAvailableArray.count)")
println("first element of usersArray: \(self.usersArray.first)")
println("last element of usersArray: \(self.usersArray.last)")
println("number of elements currently in usersArray: \(self.usersArray.count)")
}
here is the console output I get:
aUser.username before append: joeBob
ParseStarterProject.usersAvailable
first element of usersAvailableArray: Optional("joeBob")
last element of usersAvailableArray: Optional("joeBob")
number of elements currently in usersAvailableArray: 1
first element of usersArray: Optional(["joeBob"])
last element of usersArray: Optional(["joeBob"])
number of elements currently in usersArray: 1
aUser.username before append: monkey
ParseStarterProject.usersAvailable
first element of usersAvailableArray: Optional("monkey")
last element of usersAvailableArray: Optional("monkey")
number of elements currently in usersAvailableArray: 2
first element of usersArray: Optional(["joeBob"])
last element of usersArray: Optional(["monkey"])
number of elements currently in usersArray: 2
aUser.username before append: support
ParseStarterProject.usersAvailable
first element of usersAvailableArray: Optional("support")
last element of usersAvailableArray: Optional("support")
number of elements currently in usersAvailableArray: 3
first element of usersArray: Optional(["joeBob"])
last element of usersArray: Optional(["support"])
number of elements currently in usersArray: 3
Why is my append of usersAvailableArray replacing every element in the array UsersAvailableArray?