Когда расширение в Swift просто использует переменную следующим образом:
extension NSString {
var isNumber: Bool {
return length > 0 && rangeOfCharacter(from: CharacterSet.decimalDigits.inverted).location == NSNotFound
}
}
Я могу вызвать ее из Objective-C, используя очень удобный синтаксис:
NSString *str = @"twelve";
BOOL isNumber = str.isNumber;
Однако яборется с синтаксисом, когда расширение использует функцию, как в:
extension String {
func asImage(withAttributes attributes: [NSAttributedString.Key: Any]? = nil, size: CGSize? = nil) -> UIImage? {
let size = size ?? (self as NSString).size(attributes: attributes as! [String : Any])
if #available(iOS 10.0, *) {
return UIGraphicsImageRenderer(size: size).image { _ in
(self as NSString).draw(in: CGRect(origin: .zero, size: size),
withAttributes: attributes as! [String : Any])
}
} else {
// Fallback on earlier versions
return nil
}
}
Это можно вызвать из Swift всего с:
var image = "Hello World".asImage()
Но я не могу понять, какназывать это из Objective-C.
На самом деле, автозапуск даже не распознает str.asImage, и когда я пробую разные вещи, он приводит меня в кроличью нору ошибок и исправляет их, которые приводят к другим ошибкам.
Какя бы назвал вышеуказанное расширение из Objective-C?