替换解析中的对象
Replacing Object In Parse
我正在尝试删除 Parse 中保存的对象并替换它。我的代码不工作。我的解析数据库只添加具有相同数组名称的对象。这是我的代码......
@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()
。
这一切有意义吗?
我不必将数组转换为 PFFile。我只需要添加第二个查询。基本上我是在查询当前用户的所有视频。添加 query.whereKeyExists 将其缩小到特定视频。它还将使我的检索查询更容易。在这里.......
@IBAction func finalSaveBTN(sender: AnyObject)
{
videoARY = [videoId, vidTitleText, vidDescription, vidIMG]
let query = PFQuery(className: "UserVideos")
query.whereKey("userObjectId", equalTo: PFUser.currentUser()!.objectId!)
query.whereKeyExists("vid\(self.saveValueLBL.text!)")
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]?, error: NSError?) -> Void in
for object in objects!
{
object.deleteInBackground()
object.saveInBackground()
}
}
let videoSave = PFObject(className: "UserVideos")
videoSave.setObject(self.videoARY, forKey: "vid\(self.saveValueLBL.text!)")
videoSave["userObjectId"] = PFUser.currentUser()!.objectId
videoSave.saveInBackgroundWithBlock { (success, error ) -> Void in
if success == true
{
print("Succesful")
}
}
}
我正在尝试删除 Parse 中保存的对象并替换它。我的代码不工作。我的解析数据库只添加具有相同数组名称的对象。这是我的代码......
@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()
。
这一切有意义吗?
我不必将数组转换为 PFFile。我只需要添加第二个查询。基本上我是在查询当前用户的所有视频。添加 query.whereKeyExists 将其缩小到特定视频。它还将使我的检索查询更容易。在这里.......
@IBAction func finalSaveBTN(sender: AnyObject)
{
videoARY = [videoId, vidTitleText, vidDescription, vidIMG]
let query = PFQuery(className: "UserVideos")
query.whereKey("userObjectId", equalTo: PFUser.currentUser()!.objectId!)
query.whereKeyExists("vid\(self.saveValueLBL.text!)")
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]?, error: NSError?) -> Void in
for object in objects!
{
object.deleteInBackground()
object.saveInBackground()
}
}
let videoSave = PFObject(className: "UserVideos")
videoSave.setObject(self.videoARY, forKey: "vid\(self.saveValueLBL.text!)")
videoSave["userObjectId"] = PFUser.currentUser()!.objectId
videoSave.saveInBackgroundWithBlock { (success, error ) -> Void in
if success == true
{
print("Succesful")
}
}
}