gpt4 book ai didi

arrays - 替换解析中的对象

转载 作者:行者123 更新时间:2023-11-30 13:55:38 25 4
gpt4 key购买 nike

我正在尝试删除解析中保存的对象并替换它。我的代码不起作用。我的解析数据库仅添加具有相同数组名称的对象。这是我的代码......

 @IBAction func finalSaveBTN(sender: AnyObject)
{
videoARY = [videoId, vidTitleText, vidDescription, vidIMG]
let videoSave = PFObject(className: "UserVideos")
videoSave.deleteInBackgroundWithBlock { (success, error) -> Void in
if success == true
{
videoSave["userObjectId"] = PFUser.currentUser()!.objectId
videoSave["vid\(self.saveValueLBL.text!)"] = self.videoARY
videoSave.saveInBackgroundWithBlock { (success, error ) -> Void in
if success == true
{
print("Succesfull")
}
}
}
else
{
print("Error")
}
}
}

我想删除该对象,但如果有人知道如何成功更新 Parse 数组,那也会有所帮助。谢谢。

*** 更新 ****

我正在尝试这个,也不起作用,可能出了什么问题......

@IBAction func finalSaveBTN(sender: AnyObject)
{
videoARY = [videoId, vidTitleText, vidDescription, vidIMG]
let videoSave = PFObject(className: "UserVideos")
let query = PFQuery(className: "UserVideos")
query.whereKey("userObjectId", equalTo: PFUser.currentUser()!.objectId!)
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]?, error: NSError?) -> Void in
for object in objects!
{
let vid = object["vid\(self.saveValueLBL.text!)"]!
vid!.delete()
}

}
videoSave["userObjectId"] = PFUser.currentUser()!.objectId
videoSave["vid\(self.saveValueLBL.text!)"] = self.videoARY
videoSave.saveInBackgroundWithBlock { (success, error ) -> Void in
if success == true
{
print("Succesful")
}
}
}

**** 更新 *****我正在删除 videoSave 的所有视频。如果您对如何定位特定数组有任何建议,我将不胜感激。我将尝试返工并保存为简单的 PFFile

@IBAction func finalSaveBTN(sender: AnyObject)
{

videoARY = [videoId, vidTitleText, vidDescription, vidIMG]
let videoSave = PFObject(className: "UserVideos")
let query = PFQuery(className: "UserVideos")
query.whereKey("userObjectId", equalTo: PFUser.currentUser()!.objectId!)
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]?, error: NSError?) -> Void in
for object in objects!
{
if let vid = object["vid\(self.saveValueLBL.text!)"]!
{
vid.deleteInBackground()
vid.saveInBackground()
}
}

}
videoSave["userObjectId"] = PFUser.currentUser()!.objectId
videoSave["vid\(self.saveValueLBL.text!)"] = self.videoARY
videoSave.saveInBackgroundWithBlock { (success, error ) -> Void in
if success == true
{
print("Succesful")
}
}

最佳答案

这里有一些障碍,让我引导您克服它们。

1:

let videoSave = PFObject(className: "UserVideos")
videoSave.deleteInBackgroundWithBlock {...}

第一个问题是您正在尝试删除正在创建的全新对象,该对象尚未保存到服务器。这就是 let ... = PFObject(className:...) 所做的,它创建一个新对象。

2:更新解析数组非常简单!如果您的代码中有该对象,您可以简单地使用 、 或 等函数更改对象,然后使用 .saveInBackgroundWithBlock ,瞧!如果您没有该对象,则需要首先创建一个没有服务器数据的对象版本,然后让它从解析服务器获取其信息,然后您可以修改并保存它。这是您执行这两件事的方法

    PFObject(withoutDataWithObjectId: objectId)
PFObject().fetchIfNeededInBackgroundWithBlock({})

最后,如果您没有对象的 objectId,则必须使用 PFQuery 找到它,然后使用 .whereKey(...) 进行过滤直至找到。

3:您是否知道,通过调用 videoSave["vid\(self.saveValueLBL.text!)"] = self.videoARY,您将保存到解析服务器中名为vid+self.saveValueLBL.text!的字符串?您可能正在动态创建解析列。请注意!

4:另一个问题是 videoSave["vid\(self.saveValueLBL.text!)"] = self.videoARY 行。您无法保存 PFFile 数组。您必须将该信息保存在单独的列中,并指定类型 PFFile

5:在您的新代码块中,我认为 delete() 的工作方式与您想象的不同。如果您想删除整个对象,请使用 object.deleteInBackground(),如果您只想删除该对象的某个属性,您可以使用 object.removeObjectForKey(...) >,然后object.saveInBackground()

这一切有意义吗?

关于arrays - 替换解析中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33662678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com