应用程序重新启动时照片丢失并取消固定

Posted

技术标签:

【中文标题】应用程序重新启动时照片丢失并取消固定【英文标题】:Photo is lost and Unpinned when app restarts 【发布时间】:2015-08-26 08:07:37 【问题描述】:

我正在使用 Parse pinInBackground 功能保存稍后将与 parse 同步的信息,但该信息的一部分是已拍摄的照片,但是当我在信息与 Parse 同步之前重新启动应用程序时,图像丢失。 重新启动应用程序后如何不丢失图片。 我必须将其保存在本地吗?如果是这样,在哪里以及如何? 提前谢谢你,如果需要我的任何代码,请告诉我。

//Here I pin the picture in the background
@IBAction func cameraButton(sender: AnyObject) 
    imagePicker = UIImagePickerController()
    imagePicker.delegate = self
    imagePicker.sourceType = .Camera
    presentViewController(imagePicker, animated:true, completion: nil)


func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) 

    let pickedImage:UIImage = info[UIImagePickerControllerOriginalImage] as! UIImage
    let imageData = UIImageJPEGRepresentation(pickedImage, 0.5)
    let imageFile:PFFile = PFFile(data: imageData)


    locationLogs["photo"] = imageFile
    locationLogs.pinInBackgroundWithBlock (success: Bool, error: NSError?) -> Void in

        if (success) 
            self.locationManager.stopUpdatingLocation()
        else
            println("error= \(error)")
        
    
    imagePicker.dismissViewControllerAnimated(true, completion: nil)


//Query it 
func queryAll() 
    let query = PFQuery(className:"LocationLogs")

    query.fromLocalDatastore()
    query.findObjectsInBackgroundWithBlock(  (NSArray results, NSError error) in
        if error == nil && results != nil 
            println("array = \(results)" )
            self.tableData = results!
            self.loggedItemsTableView.reloadData()
        else
            println("An error has occured= \(error)")
        
    )


//Save and unpin it 
 @IBAction func syncAllButton(sender: AnyObject) 

    PFObject.saveAllInBackground(self.tableData as [AnyObject], block:  (success: Bool, error: NSError?) -> Void in
        if (success) 

            PFObject.unpinAllInBackground(self.tableData as [AnyObject])

            println("Pinned Data has successfully been saved")


        else
            println("error= \(error?.localizedDescription)")
        
    )

【问题讨论】:

你能提供你用来尝试检索固定数据的代码吗? 【参考方案1】:

Parse 将照片保存在tmp/ 目录中,当应用重新启动时,tmp/ 会被擦除。 将图片保存到Documents/目录,同步时从Documents/拉取图片,然后保存。 我不知道代码,所以如果有人可以给出解释,那就太好了

【讨论】:

以上是关于应用程序重新启动时照片丢失并取消固定的主要内容,如果未能解决你的问题,请参考以下文章

当后台服务取消暂停或重新启动时,iOS 应用程序需要多长时间?

重新启动应用程序时数据丢失(核心数据)

使用 Spectron 测试电子应用重新启动时丢失 webdriverio 会话

房间数据库在重新启动应用程序时丢失数据

Android 警报管理器在重新启动设备或从后台杀死应用程序后取消

防止 .Net 服务重新启动时数据丢失