Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象上后台的Android parse delete仍保留objectId的值_Android_Database_Parse Platform_Row_Delete Row - Fatal编程技术网

对象上后台的Android parse delete仍保留objectId的值

对象上后台的Android parse delete仍保留objectId的值,android,database,parse-platform,row,delete-row,Android,Database,Parse Platform,Row,Delete Row,我使用parse作为数据库,我有一个名为Address的表,一个用户可以有多个地址。我有一个活动,它显示一个地址列表,该地址被标记为用户。用户可以删除、编辑或添加地址。用户删除地址后,可以选择撤消删除。因此,我使用从解析中删除的相同地址对象再次保存。但是address类是ParseObject的一个子类,它仍然保存getObjectId()的值。因此,当我试图在后台保存地址对象时,因为对象Id值,它试图在地址表中找到特定的行并更新它,而实际上它并不存在。我得到的错误是找不到要更新的ParseEx

我使用parse作为数据库,我有一个名为Address的表,一个用户可以有多个地址。我有一个活动,它显示一个地址列表,该地址被标记为用户。用户可以删除、编辑或添加地址。用户删除地址后,可以选择撤消删除。因此,我使用从解析中删除的相同地址对象再次保存。但是address类是ParseObject的一个子类,它仍然保存getObjectId()的值。因此,当我试图在后台保存地址对象时,因为对象Id值,它试图在地址表中找到特定的行并更新它,而实际上它并不存在。我得到的错误是找不到要更新的ParseException对象。代码如下所示

//删除代码

mAddress = mAddressAdapter.getItem(position);
mAddress.deleteInBackground(delete call back) {
       // even after mAddress is successfully deleted from parse table and the row doesn't exists. mAddress.getObjectId() still has some value which should be null or empty after deletion I believe.
       after deletion success option to undo the delete
       if the user selects yes

}
//保存旧的mAddress对象以再次保存

mAddress.saveInBackground(save call back) {
      // here because the mAddress.getObjectId() still has value the parse tries to update the values against the object ID which in background is deleted.
}

任何关于如何解决这个问题的想法都是非常值得赞赏的。我不确定这是正常行为还是我在这里遗漏了什么。

只是想弄清楚发生了什么。。。如果用户选择删除地址,您是从数据库中删除地址,还是仍将其存储在数据库中,但不向用户显示?另外,我不知道您是否有意这么做,我很抱歉,但我的意思是“SaveCallback”(与注释无关,只是询问)。我相信当对具有objectId的parseObject调用save时,它会自动尝试更新该行,因为所有objectId都是在数据库中生成的,因此它假设该行存在。也许试着做一些像mAddress.remove(“ObjectId”);然后是mAddress.savenbackground();删除ObjectId,以便保存时认为它是新对象,因为ObjectId已丢失?我希望这将有助于你在正确的方向一点!嗨,詹姆斯,我把它从我的数据库中删除了。嗨,巴特,我也试过了,但没用either@PunK_l_RuLz当你尝试巴特的建议时发生了什么?