В одном конкретном случае я не могу найти правильное решение о том, как привести блок, определенный в Objective C, к замыканию в Swift, чтобы я мог выполнить его в Swift.В других случаях использование @escaping
помогло, когда другой блок / замыкание было передано закрытию.Но, к сожалению, не в этом случае.
Определения типа блока в Цели C:
typedef void (^ViewModelUpdatedBlock)(GetValueForKeyPathBlock);
typedef id (^GetValueForKeyPathBlock)(NSString * keyPath);
Объявление блока в Цели C:
someNSMutableDictionary[kViewModelUpdatedBlockKey] = ^(GetValueForKeyPathBlock getValueBlock) { ... }
Когда я пытаюсьиспользовать один из этих блоков в Swift, я не могу найти правильный способ его разыграть.Я пытался:
let viewModelUpdatedBlock = someNSMutableDictionary[kViewModelUpdatedBlockKey] as? ViewModelUpdatedBlock // = nil
let viewModelUpdatedBlock = someNSMutableDictionary[kViewModelUpdatedBlockKey] as? (GetValueForKeyPathBlock?)->() // = nil
let viewModelUpdatedBlock = someNSMutableDictionary[kViewModelUpdatedBlockKey] as? (GetValueForKeyPathBlock)->() // = nil
let viewModelUpdatedBlock = someNSMutableDictionary[kViewModelUpdatedBlockKey] as? (@escaping GetValueForKeyPathBlock)->() // = nil
Пожалуйста, помогите!