我已经使用 AFIncrementalStore 设置了所有内容,以使用Parse作为后端服务。使用这样的服务使计算 API 请求变得很重要,就好像我每月超过 1MM 请求(尽管是一个成功的指标!)可能会产生一些不错的账单。这通常不会是一个问题,但我所看到的是,如果我在以下方法中放置一个断点AFHTTPClient
:
- (void)enqueueHTTPRequestOperation:(AFHTTPRequestOperation *)operation;
我发现对特定对象的请求发生了 3 次,而我只需要一次。
$1 = 0x0b9afe30 https://api.parse.com/1/classes/Poem/cUpTflj0j8
// ...
$8 = 0x099e0a30 https://api.parse.com/1/classes/Poem/cUpTflj0j8
...
$18 = 0x0bb6d530 https://api.parse.com/1/classes/Poem/cUpTflj0j8
请注意,不同的内存地址来自AFHTTPRequestOperation
,我正在打印request.URL
属性以检查objectId
每个请求的(URL 末尾的随机字符串)。
现在我对它的工作原理还不够熟悉,NSIncrementalStore
或者AFIncrementalStore
经过两天的调试和检查后弄清楚了。我很想听听有关可能导致这种情况的任何想法,无论是有意还是无意。
我可能会补充一点,我正在使用 aNSFetchedResultsController
和 a UITableView
。我将对象的第一个请求的堆栈跟踪跟踪到我的 tableview 的数据源。其他 2 个请求回溯到AFIncrementalStore
.
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// ...
NSManagedObject *poem = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = [poem valueForKey:@"title"]; // traced back to here
// ...
}