我正在使用Parse作为服务器端。我有一个表视图,其中包含来自Parse的Contacts对象列表。如果用户点击对象,则将其保存为解析,如果再次点击,则将其从解析中删除。
为了保存,我使用方法:
- (void)addContact:(Contact *)contact withBlock:(void (^)(void))completion {
[contact saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (completion) completion();
}];
}
删除使用此:
- (void)removeContact:(Contact *)contact withBlock:(void (^)(void))completion {
[contact deleteInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
contact.objectId = nil;
if (completion) completion();
}];
}
我将objectId设置为nil,因为我在表视图中使用此属性来查看对象是否已经完全解析它只是在手机上。
问题在于,如果用户执行以下步骤:保存,删除,保存。
这是正常程序吗?在手机上,即使在删除方法之后,对象仍然拥有所有数据。所以我假设如果我在包含所有数据的对象上运行save方法,它将把它保存到解析中,即使同一个对象在过去经历了删除。
这里有一个空对象的照片和一个用所有数据正确保存的照片:
您对此有何体验?享受解决这个问题,并帮助使一个更好的地方:)
答案 0 :(得分:2)
将对象ID设置为nil依赖于PFObject
类的私有和未记录的功能。即使它现在有效,也不能保证始终有效。
您应该不删除该对象,只需设置一个标志以显示它已被删除/删除,并将其用于您的逻辑。
或者,您应该在删除本地对象后放弃它,并使用旧对象值的副本创建一个新对象。