Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS循环错误_Ios_Facebook_Loops_Azure - Fatal编程技术网

iOS循环错误

iOS循环错误,ios,facebook,loops,azure,Ios,Facebook,Loops,Azure,所以我在iOS中开发时遇到了一个奇怪的循环问题。这里有超过数百行的代码,所以我将描述这个问题,而不是让你感到厌烦 我正在尝试将事件从Facebook上载到Microsoft Azure服务器。为此,我创建了一个名为FacebookUploader的类。在该类中,我循环浏览Facebook的事件(并将所有变量设置为class.ie。第一个事件的名称为self.event,当循环继续并转到第二个事件时,该事件的名称为self.event now)。我期望iOS做的是遍历循环中的每个事件,上传它,然后

所以我在iOS中开发时遇到了一个奇怪的循环问题。这里有超过数百行的代码,所以我将描述这个问题,而不是让你感到厌烦

我正在尝试将事件从Facebook上载到Microsoft Azure服务器。为此,我创建了一个名为FacebookUploader的类。在该类中,我循环浏览Facebook的事件(并将所有变量设置为class.ie。第一个事件的名称为self.event,当循环继续并转到第二个事件时,该事件的名称为self.event now)。我期望iOS做的是遍历循环中的每个事件,上传它,然后转到下一个事件

这在我上传事件时起了作用。现在,我还要首先检查数据库,看看事件是否已经存在。然后当我确认它不在那里时,我上传它。然而,当需要上传时,Facebook Uploader已经完成了所有事件的循环,只上传了最后一个事件(多次,每个应该上传的事件一次)

我已经指出了错误,现在我在问,我做错了什么?该变量是否应该不与类关联,而是本地变量?或者有没有办法停止运行循环,直到服务器确认事件不存在?非常感谢你的帮助

MSQuery *query = [self.table queryWithPredicate: [NSPredicate    predicateWithFormat:@"fb_id == %@", self.id]];
[query readWithCompletion:^(MSQueryResult *result, NSError *error) {
//not in table, add it
NSArray *items = [result.items mutableCopy];
if (items == nil || [items count] == 0) {
     NSDictionary *newItem;
     if(self.end_time != nil) {
     newItem = @{@"fb_id": self.id, @"event_name": self.name, @"event_location": self.location, @"event_start": self.start_time, @"event_end": self.end_time, @"event_description": self.descriptionOfEvent, @"picture_url": self.picture_url, @"event_latitude": self.venue_latitude, @"event_longitude": self.venue_longitude, @"popularity": self.popularity};
      }
     else {
        newItem = @{@"fb_id": self.id, @"event_name": self.name, @"event_location": self.location, @"event_start": self.start_time, @"event_description": self.descriptionOfEvent, @"picture_url": self.picture_url, @"event_latitude": self.venue_latitude, @"event_longitude": self.venue_longitude, @"popularity": self.popularity};
     }
     [self.table insert:newItem completion:^(NSDictionary *result, NSError *error) {
     // The result contains the new item that was inserted,
     // depending on your server scripts it may have additional or modified
     // data compared to what was passed to the server.
     if(error) {
           NSLog(@"ERROR %@", error);
     } else {
         NSLog(@"Todo Item: %@", [result objectForKey:@"event_name"]);
     }
     }];
}

上述Paulw11给出了问题的答案。通过在循环之外分配变量,我创建了变量的多个副本,这导致了我的错误。在循环内部分配变量修复了错误。

请添加一些代码-听起来您是在异步执行代码,但在转到另一个步骤或等待您响应之前,不要等待代码完成。我添加了连接服务器的代码。这就是我相信循环在继续之前不会等待代码完成的地方。代码看起来不错-你没有显示循环,你说这就是你遇到问题的地方-所以你需要显示更多代码循环时获得一个对象的多个副本的常见原因是如果你在循环外分配对象,然后重置循环内的属性-因为您不断修改同一实例,所以只能得到最终值