扫描DynamoDB中的项目

时间:2016-04-09 05:08:54

标签: ios objective-c uitableview amazon-dynamodb dispatch-async

我正在尝试扫描包含搜索栏中子字符串的tagItems。每当文本更改时,此搜索方法都在我的数据访问对象中启动。然后通知告诉我的ViewController重新加载我的tableView,它显示所有的搜索结果。当我添加断点时,它工作正常,但是当它运行没有中断时,它不会显示任何结果一分钟,但它将nslog该数组具有正确的项目并且正在重新加载表。然后控制台中会出现一个警告,结果会在收到后很长时间弹出。这是警告:此应用程序正在从后台线程修改autolayout引擎,这可能导致引擎损坏和奇怪的崩溃。这将在将来的版本中导致异常。从我收集它通常意味着dispatch_async(dispatch_get_main_queue(),^ {});需要在某处添加,但我不明白为什么。我试图不断重新加载tableView。这是我的代码:

AWSDynamoDBObjectMapper *dynamoDBObjectMapper = [AWSDynamoDBObjectMapper defaultDynamoDBObjectMapper];
AWSDynamoDBScanExpression *scanExpression = [AWSDynamoDBScanExpression new];
scanExpression.limit = [NSNumber numberWithInt:25];
scanExpression.filterExpression = @"contains(tagName, :val)";
scanExpression.expressionAttributeValues = @{
                                             @":val":searchText,
                                             };

[[dynamoDBObjectMapper scan:[AWSTopicObject class]
                 expression:scanExpression]
 continueWithBlock:^id(AWSTask *task) {
     if (task.error) {
         NSLog(@"The request failed. Error: [%@]", task.error.description);
     }
     if (task.exception) {
         NSLog(@"The request failed. Exception: [%@]", task.exception);
     }
     if (task.result) {
         AWSDynamoDBPaginatedOutput *paginatedOutput = task.result;
         NSLog(@"%@",paginatedOutput.items);
         for(AWSTagObject *tag in paginatedOutput.items){
             NSString *tempTag = tag.tagName;
             [self.searchArray addObject:tempTag];
             [[NSNotificationCenter defaultCenter]
              postNotificationName:@"SearchNotification"
              object:self];
         }
     }
     return nil;
 }];

0 个答案:

没有答案