我从Objective-C类调用一个函数。我将一个数组从我的Swift类传递给Objective-C函数。
这是我的Swift代码
var videosAutoCompletion:[String] = []
completeSearch.autocompleteSegesstions(searchText, self.tableView, self.videosAutoCompletion)
Objective-C功能
-(void)autocompleteSegesstions : (NSString *)searchWish :(UITableView*)table :(NSArray*)stringArray
在Objective-C函数中,我有一个块
dispatch_sync(dispatch_get_main_queue(), ^{
self.ParsingArray = [[NSMutableArray alloc]init]; //array that contains the objects.
for (int i=0; i != [jsonObject count]; i++) {
for (int j=0; j != 1; j++) {
//NSLog(@"%@", [[jsonObject objectAtIndex:i] objectAtIndex:j]);
[self.ParsingArray addObject:[[jsonObject objectAtIndex:i] objectAtIndex:j]];
//Parse the JSON here...
//NSLog(@"Parsing Array - %@",self.ParsingArray);
stringArray = [self.ParsingArray copy];
[table reloadData];
}
}
});
我收到以下行的错误。
变量不可分配(缺少__block类型说明符) 在线
stringArray = [self.ParsingArray copy];
答案 0 :(得分:0)
您正在尝试修改块中stringArray
函数参数的值,因此您应该将其告知编译器。您可以尝试在dispatch_sync
电话之前制作副本:
__block NSArray *stringArrayCopy = [stringArray copy];
并使用块内的副本。
这会使编译器错误无效,但请注意,如果您打算通过在ObjC方法中设置videosAutoCompletion
参数来更改Swift stringArray
数组,则需要更改方法。设置stringArray = [self.ParsingArray copy];
仅对本地具有影响
autocompleteSegesstions:::
功能。