我使用CoreData作为应用程序的主数据库,并且仅针对我无法发送到Parse的对象解析本地数据库(引脚):因为Internet问题而创建新的或更新旧的。 问题是 - 如果我想在Parse I中更新对象,则在获取此对象时获取此对象 - 更新一些数据,然后再次保存。但是如果我尝试离线更新PFObject会怎么样? 如何创建PFObject,它将在Internet上更新Parse中的同一个对象?我用这个:
PFObject *parseObj = [PFObject objectWithClassName:@"MyClass"];
if ([self isLocalID:[managObj valueForKey:@"id"]]) {
parseObj.objectId = [managObj valueForKey:@"id"];
}
它运行良好(在线或离线发送到Parse或固定),但我不时会收到此错误:行Attempted to change an objectId to one that's already known to the OfflineStore.
上的parseObj.objectId = [managObj valueForKey:@"id"];
我认为这个原因错误 - Parse本地数据存储区已经有一个我试图设置的objectId对象,但在创建新的PFObject之前我从本地数据存储区同步查询:
PFQuery *query = [PFQuery queryWithClassName:updateObj.entity.name];
[query fromLocalDatastore];
[query whereKey:@"localID" containedIn:arrObjsLocalIDs];
NSArray *objects = [query findObjects];
if (objects.count > 0) {
// Send this array to Parse
}
else {
// Created PFObjects
}
当我使用
时 parseObj = [PFObject objectWithoutDataWithClassName:@"MyClass"
objectId:[managObj valueForKey:@"id"]];
我这几天都在努力解决这个问题,我做错了什么?
修改 我想我发现了一个问题。在发送给Parse之前我保存了对PFObject的引用(如果应用程序被杀了我将其固定),并且之后没有。