サーバー側に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 に設定したのは、テーブル ビューでこのプロパティを使用して、オブジェクトが既に解析されているかどうかを確認するためです。
問題は、ユーザーが保存、削除、保存などの手順を実行した場合です。
- 保存: オブジェクトは、すべてのデータを使用して解析時に作成されます。
- 削除: オブジェクトは解析から削除されます。
- 保存: オブジェクトは解析時に作成されますが、データはありません (objectId のみ)。
これは通常の手順ですか?電話では、削除メソッドの後でも、オブジェクトには常にすべてのデータがあります。したがって、すべてのデータを含むオブジェクトに対して save メソッドを実行すると、同じオブジェクトが過去に削除されたとしても、解析に保存されると思います。
以下は、1 つの空のオブジェクトと、すべてのデータとともに正しく保存されたオブジェクトの図です。
これについてあなたの経験は何ですか?この問題の解決を楽しみ、wold をより良い場所にする手助けをしてください :)