我使用Parse作为iPad应用的后端。这是我用过的第二个应用程序。尽管由于文档浅薄而导致学习曲线痛苦,但我已经开始欣赏该产品。但是,我所困惑的一个新问题是保存PFObject数组所需的API请求数量。我假设保存一个PFObjects数组将被视为1个API请求。不幸的是,这不是我所看到的。相反,计数与数组中PFObject的数量相匹配。我有希望做错事。
在类似的问题Parse.com - saveAll on PFObject does it account for 1 API call?中,用户声明
From Parse:
saveAll attempts to do as few API calls as possible. Usually a call to saveAll results in only one API request. However, if any of the objects in the set has a relation to another unsaved object, that object will have to be saved first, resulting in more API requests.
他们也提供了一个链接。不幸的是,链接已经死了。这让我相信这些信息可能不再准确。
以下是我用来测试分析报告的API请求数量的简单函数。为简单起见,对象彼此不相关。第一个saveAllInBackground:块创建了2个新的PFObject,将它们放在一个数组中并将它们保存到Parse。我希望这可以算作1个API请求,但它计为2.然后我在保存它们之后采用相同的对象并更新每个对象的名称字段并重新保存它们。同样,我希望这可以算作1个API请求,但它也算作2.所以总共有4个API请求用于下面的代码。
PFObject *subject = [PFObject objectWithClassName:@"Subject"];
PFObject *assignment = [PFObject objectWithClassName:@"Assignment"];
NSArray *testArray = @[subject, assignment];
NSLog(@"Testing saveall create objects api count");
[PFObject saveAllInBackground:testArray block:^(BOOL succeeded, NSError *error)
{
NSLog(@"Testing saveall create objects result = %d",succeeded);
subject[@"name"] = @"subjectName";
assignment[@"name"] = @"assignmentName";
if(!error)
{
NSLog(@"Testing saveall update objects api count");
[PFObject saveAllInBackground:testArray block:^(BOOL succeeded, NSError *error)
{
NSLog(@"Testing saveall update objects result = %d",succeeded);
}];
}
}];
我希望我遗漏了一些内容并保存每个PFObject并不算作它自己的API请求。但是,如果是这种情况,那就这样吧。但如果有可能,那么我很乐意重构我的代码以利用API请求中的节省。