Вот тип блока, который я определяю в Objective-CОбъектив-C Блок в Swift - переменная отсутствует?
typedef void (^arrayBlock)(NSArray *blockArray);
У меня есть Objective-C класс с методом, который использует это как блок обратного
-(void)loadTimesWithSuccessBlock:(arrayBlock)successBlock;
Когда я пытаюсь использовать этот метод в Свифте, это то, что дает автозаполнение.
let timeClockLibrarian = HMFTimeClockLibrarian()
timeClockLibrarian.loadTimesWithSuccessBlock { ([AnyObject]!) -> Void in
//Where is blockArray?
}
Я предполагаю, что [AnyObject]! должен быть NSArray. Но я не понимаю, как я должен получить доступ к этой переменной?
Если бы я использовать этот метод в Objective-C Я получаю результат:
[timeClockLibrarian loadTimesWithSuccessBlock:^(NSArray *blockArray) {
//I can use the blockArray here :)
}];
Это то, что я думал. Когда я пытаюсь назначить blockArray локальной переменной, то есть {var logEntries = [LogEntry()}, используя {self.logEntries = blockArray}, он сообщает мне: «Невозможно вызвать« loadTimesWithSuccessBlock »с помощью списка аргументов типа» (([AnyObject]!) -> Void) '" – Hackmodford
Это потому, что массив нетипизирован и присваивание не выполняется. У вас разные варианты в зависимости от того, используете ли вы Xcode 6 или бета-версию Xcode 7. – zneak
Я использую Xcode 6 – Hackmodford