我正在尝试扫描包含搜索栏中子字符串的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;
}];