Я немного новичок в Swift и Objective-C (и я имею в виду, что я начал на прошлой неделе), так что, если это дублирующий вопрос, я сожалею о том, авансовый.Swift + Objective C - дополнительный аргумент 'withCompletionBlock' в вызове
Короче говоря, у меня, похоже, возникают проблемы с вызовом метода. Одна часть кода находится в Objective-C, а другая часть - в Swift. Я импортировал файл Objective-C в файл Swift через мостовой файл заголовка, если это помогает.
Декларация метода (в Objective-C):
- (NSUInteger)fetchTeamsForEventKey:(NSString *)eventKey withCompletionBlock:(void (^)(NSArray *teams, NSInteger totalCount, NSError *error))completionBlock {
NSString *apiMethod = [NSString stringWithFormat:@"event/%@/teams", eventKey];
NSUInteger taskId = [[TBAKit sharedKit] callArrayMethod:apiMethod modelClass:[TBATeam class] andCompletionBlock:^(NSArray *modelObjects, NSInteger totalCount, NSError *error) {
completionBlock(modelObjects, totalCount, error);
}];
return taskId;
}
Реализация метода (Swift):
TBAKit.fetchTeamsForEventKey("2015cacg", withCompletionBlock: {(teams:NSArray, totalCount:NSInteger, error:NSError) in //The error appears in this line.
if error {
NSLog("Unable to fetch event - %@", error.localizedDescription)
return
}
teamList = teams
})
Исходный код метода декларации в этом GitHub Repo: https://github.com/ZachOrr/TBAKit. Это в файле TBAKit/TBAKit + EventMethods.m
Edit: Я также попытался код с каждым из следующих действий:
-> UInt
и
-> Int
Edit 2: Таким образом, решение, упомянутое в t4nhpt, действительно работало так, как планировалось, но, в свою очередь, представилась другая проблема. Я должен был заменить
teamList = teams
с
self.teamList = teams
Сейчас я получаю сообщение об ошибке: «не может присвоить значение типа„anyobject“к значению типа„[TBATeam]“» на вкладке линия
self.teamList = teams
Моя декларация переменной
var teamList = [TBATeam]()
Редактировать 3: Я решил проблему, указанную в EDIT 2, путем преобразования каждого объекта внутри команд в TBATeam. Извините за тупую ошибку.
Я попытался, но это дает мне другую ошибку: не может ссылаться на 'fetchTeamsForEventKey' со списком аргументов типа (String, withCompletionBlock: (NSArray, NSInteger, NSError) -> _) –
Предоставьте полное точное сообщение об ошибке i вопрос. – zaph
Когда метод подсказки Xcode, в параметре 'comCompletionBlock', вы должны нажать клавишу« Enter », и он будет генерировать код для вас. Это более точно, чем вы печатаете. – t4nhpt