我有一个parse.com后端。 我有一个Message类,它是PFObject的子类。 我将来自数据库的消息存储在一个数组message = Message中。

我在需要更新记录时遇到麻烦,因为我正在重复。

我一直想做的是从messages数组中获取一条消息,然后调用saveInBackgroundWithBlock ...,以为后端将知道它引用了数据库中的现有行。

我也遇到过fetchIfNeeded。

我的代码如下。 我要去哪里错了? 我应该如何更新存储在消息数组中的现有记录。 如果有的话,应该如何在我的场景中使用fetchIfNeeded? 还是应该以某种方式使用核心数据/本地存储? (困惑)

class Message : PFObject, PFSubclassing {
 var messageTitle : NSString
 var imageFile: PFFile   
}

func getMessages() {}
 var currentMessages = [Message]()
 var messageQuery = Message.query()
 messageQuery.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
  for object in objects {
   var message = Message()
   message.messageTitle = object["messageTitle"] as String
   message.imageFile = object["imageFile"] as PFFile
   self.currentMessages.append(message)
  }
}

func updateMessage() {
 message.messageTitle = self.messageTitle.text
 let imageData = UIImagePNGRepresentation(self.imageToPost.image)
 let imageFile = PFFile(name: "image.png", data: imageData)
 message.imageFile = imageFile
 message.saveInBackgroundWithBlock({ (success: Bool!, error: NSError!) -> Void in
  if success == false {
   self.displayAlert("Something went wrong", error: "Please try again later")
  } else {
   self.navigationController?.popViewControllerAnimated(true)
  }
 })
}

func saveNewMessage() {
 message = Message()
 message.messageTitle = messageTitle.text
 let imageData = UIImagePNGRepresentation(self.imageToPost.image)
 let imageFile = PFFile(name: "image.png", data: imageData)
 message.imageFile = imageFile
 message.saveInBackgroundWithBlock({ (success: Bool!, error: NSError!) -> Void in
  if success == false {
   self.displayAlert("Something went wrong", error: "Please try again later")
  } else {
   self.navigationController?.popViewControllerAnimated(true)
  }
 })
}

#1楼 票数:1 已采纳

看到此错误的原因是,您是在完成块中创建新的Message对象,而不是使用查询返回的对象。

func getMessages() {
    var currentMessages = [Message]()
    var messageQuery = Message.query()
    messageQuery.findObjectsInBackgroundWithBlock { (objects: [AnyObject]!, error: NSError!) -> Void in
        for object in objects {
            // This is now creating a new, unsaved "Message" object
            var message = Message()
            message.messageTitle = object["messageTitle"] as String
            message.imageFile = object["imageFile"] as PFFile
            self.currentMessages.append(message)
            // This might be a much easier way to do what you want:
            self.currentMessages = objects
        }
    }
}

  ask by grabury translate from so

未解决问题?本站智能推荐:

1回复

更新解析值

有没有一种方法可以更新解析时的数字,不仅可以通过替换它或创建一个新的对象ID,然后删除旧的对象ID,还可以通过从解析时存储的值实际增加值并将新值添加到其中来实现。 就是 解析时:正确= 5; 在应用上:正确= 10; 解析后的新值:15 这是我的代码,但是每次都会使用新值创建一个新
1回复

Swift语言:更新解析对象

晚上好,编码员! 我创建了一个查询,以获取距设备位置7英里内的用户名和周围人的位置,我想每5-10秒更新一次这些对象(我尚未决定)。 最佳做法是什么? 我应该创建一个NSTimer()并这样调用吗? 请帮忙!!
1回复

如何快速更新解析用户词典对象

我创建了一个具有各种对象的Parse用户,例如File,Dictionary,String Objects。 我已附上我的Parse用户对象供您参考。 谁能帮助您了解如何更新用户的词典对象? 我可以访问我的用户词典对象,但不确定如何更新当前的用户词典对象。 工作代码:
2回复

需要帮助更新解析中的信息

我正在尝试使用Parse作为PFFile保存配置文件图像。 基本上,当前用户可以选择该图像,并且该图像应保存在profilePic下的Profile类中,以供以后检索。 该代码运行没有错误,但图像未在Parse中更新。 它仍然具有我在登录时为该用户设置的原始配置文件占位符图像,而不是所选的
1回复

从解析云更新解析本地存储中的固定PFObject

通过object.saveEventually() ,我将能够将本地存储中的数据与Parse中的云同步。 但是这是我感到困惑的,在文档中它声明: 固定对象后,每次通过获取或保存新数据进行更新时,本地数据存储区中的副本将自动更新 不过,下面的例子中,几个段落了,unpins
2回复

如何允许多个用户更新解析对象?

我正在构建一个进行民意测验的iOS应用。 我正在使用解析作为后端。 一项民意调查的例子是总统候选人的支持率。 我建立这种方式的方式是,每位总统候选人都有自己的对象,其中一个属性是“得分”。 现在,用户可以在此分数上添加或减少值,并且在解析时会更新该值。 这是通过以下代码完成的:
1回复

无法更新解析用户详细信息-Swift

我在AppDelegate.swift上使用以下代码来检查是否已登录用户以更改默认视图控制器。 哪个可以正常运行,但是问题是我无法更新我的在线解析用户数据。 每当我尝试更新Heroku Parse应用程序上的任何数据时,都会收到以下错误代码: 错误域=解析代码= 206“无法
1回复

应用程序徽章编号更新解析迅速

我有一个应用程序通过解析实现推送通知。 用户打开应用程序时,清除徽章图标时遇到一些问题。 我的appDelegate didFinishLaunchingWithOptions和应用程序didBecomeActive中有以下代码行: 这是暂时可行的,如果我的徽章编号为18,然