解析数组似乎本地存储到我的应用会话

时间:2015-07-20 20:05:14

标签: ios arrays swift parse-platform

我的应用程序中有一个奇怪的错误,我以前没见过。基本上我有两个视图 - 用户配置文件和编辑配置文件。在User Profile视图中,我从Parse中检索两件事:

  1. 一系列字符串,用于说明用户个人资料照片的顺序(例如[" pic1"," pic3"," pic2"])
  2. 照片文件本身(最多6个)
  3. 在编辑个人资料视图中,用户可以上传新照片以及重新排列订单数组。该视图还有一个关闭视图的按钮,并放弃任何更改,如下所示:

    @IBAction func cancelTapped(sender: AnyObject) {
    
        self.dismissViewControllerAnimated(true, completion: nil)
    
    }
    

    问题在于,如果我对照片顺序数组进行任何更改,例如重新排列或附加到它,那么请点击"取消"按钮,视图应该解散。但是,当我返回编辑配置文件视图或者即使我关闭用户配置文件然后重新打开它时,两个视图都会显示由于我点击了"取消&#而不应该保存的新订单数组34;按钮。我可以解决的唯一方法是关闭应用程序并重新打开。

    数组是否在本地保存到iPhone?如果您需要更多信息或查看更多代码,请告诉我们!

    编辑:忘记提及,当我查看Parse时,值没有存储在那里,但是Xcode日志说重新加载视图时数组会被更改。

    编辑2:这是self.photoOrder的实例化:

    var photoOrder:NSMutableArray = []
    

    来自Constants.swift的当前用户实例化

    var currentuser = PFUser.currentUser()
    

1 个答案:

答案 0 :(得分:0)

我不知道您的重新排序方法是什么样的,以及在完成重新编写时是否在PFUser对象上调用save方法。您似乎在某种程度上覆盖了编辑个人资料视图中的photoOrder属性。

解决方案1 ​​

一个简单的解决方案是在加载视图时备份当前值:

var photoOrderBackup:NSMutableArray = []

// viewDidLoad
self.photoOrder = currentuser.objectForKey("photoOrder") as! NSMutableArray
self.photoOrderBackup = currentuser.objectForKey("photoOrder") as! NSMutableArray

然后,当用户取消操作时,您有机会应用备份值。

@IBAction func cancelTapped(sender: AnyObject) {
    currentUser.photoOrder = self.photoOrderBackup; // Apply backup value
    // Perhaps add the save method here after you've overwritten the photoOrder value
    self.dismissViewControllerAnimated(true, completion: nil)
}

解决方案2

如果尚未将更改保存到currentuser对象,则刷新对象可能有助于解除挂起的更改。

@IBAction func cancelTapped(sender: AnyObject) {
    currentUser.refresh() // Refresh object with local data
    self.dismissViewControllerAnimated(true, completion: nil)
}