ios - Parse array seems to store locally to my app session -


i have weird bug in app haven't seen before. have 2 views - user profile , edit profile. in user profile view, retrieve 2 things parse:

  1. an array of strings telling order of user's profile photos (e.g. ["pic1", "pic3", "pic2"])
  2. the photo files (up 6)

in edit profile view, user able upload new photos rearrange order array. view has button close view , discard changes seen here:

@ibaction func canceltapped(sender: anyobject) {      self.dismissviewcontrolleranimated(true, completion: nil)  } 

the problem if make changes photos order array such rearranging or appending it, hit "cancel" button, view dismisses should. however, when go edit profile view or if close user profile reopen that, both views show new order array wasn't supposed saved because hit "cancel" button. way can fix closing app , reopening.

is array being saved locally iphone? please let me know if need more info or see more code!

edit: forgot mention, when in parse values aren't stored on there, xcode logs array changed when reloading view.

edit 2: here instantiation of self.photoorder:

var photoorder:nsmutablearray = [] 

currentuser instantiation constants.swift

var currentuser = pfuser.currentuser() 

i don't know how reorder method looks , if calling save method on pfuser object when reording done. seems you're overwritting photoorder attribute in edit profile view somehow.

solution 1

a simple solution backup current value when load view:

var photoorderbackup:nsmutablearray = []  // viewdidload self.photoorder = currentuser.objectforkey("photoorder") as! nsmutablearray self.photoorderbackup = currentuser.objectforkey("photoorder") as! nsmutablearray 

then got chance apply backup values when user cancels operations.

@ibaction func canceltapped(sender: anyobject) {     currentuser.photoorder = self.photoorderbackup; // apply backup value     // perhaps add save method here after you've overwritten photoorder value     self.dismissviewcontrolleranimated(true, completion: nil) } 

solution 2

if changes aren't saved currentuser object yet, refreshing object dismiss pending changes.

@ibaction func canceltapped(sender: anyobject) {     currentuser.refresh() // refresh object local data     self.dismissviewcontrolleranimated(true, completion: nil) } 

Comments