在视图控制器中,我调用此方法:
- (void)method{
PFQuery *query = [PFQuery queryWithClassName:@"AllFiles"];
[query whereKey:@"userID" equalTo:[[NSUserDefaults standardUserDefaults] stringForKey:@"KeyMyUserID"]];
[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
if (!error) {
NSMutableArray *localIds = [DBManager getAllFileIdsForUserID:[[NSUserDefaults standardUserDefaults] stringForKey:@"KeyMyUserID"]];
NSMutableArray *onlineIds = [[NSMutableArray alloc] init];
NSLog(@"log1");
for (PFObject *object in objects)
[onlineIds addObject:object[@"assignedObjectId"]];
NSLog(@"log2");
for (PFObject *object in objects)
if ([DBManager objectWasDeletedLocallyWithId:object[@"assignedObjectId"]]){
[self deleteFileForUserID:object[@"userID"] withObjectId:object[@"assignedObjectId"] completition:nil];
}else if (![localIds containsObject:object[@"assignedObjectId"]] && ![DBManager objectWasDeletedLocallyWithId:object[@"assignedObjectId"]]){
[self downloadFileWithObjectId:object[@"assignedObjectId"] forUserID:object[@"userID"]];
}
for (NSString* objectId in localIds)
if (![onlineIds containsObject:objectId])
[self uploadFileWithObjectId:objectId];
}else{
// Log details of the failure
NSLog(@"Error: %@ %@", error, [error userInfo]);
}
NSLog(@"log3");
}];
}
发生了一件非常奇怪的事情,我以前从未见过。似乎在初始for循环之后停止了方法执行。
像这样输出log1,但另外两个记录没有。如果我删除
for (PFObject *object in objects)
[onlineIds addObject:object[@"assignedObjectId"]];
然后神奇地输出log1和log2,但不输出log 3。 如果我这样做,它仍然无效:
for (PFObject *object in objects){
[onlineIds addObject:object[@"assignedObjectId"]];
}
这没有任何意义。我在其他部分使用相同的确切代码,它的工作原理。似乎for循环中有一个错误。有没有人见过这个?
答案 0 :(得分:1)
可能有一个侦听器对该addObject:方法做出反应。该侦听器的执行可能会崩溃。
在使用addOverlay时遇到类似的问题:在触发对mapView:rendererForOverlay的调用的MKMapView上:该调用正在崩溃。
卡洛斯。