2016-08-22 2 views
0

Я пытаюсь использовать Swift в Objective-C.Метод не может быть членом протокола @objc после удаления tuple

Во-первых, это было с помощью tuple так:

protocol Validation { 
    func validate(value:String?) -> (Bool, ValidationErrorType) 
} 

и потому, что кортежи не подходят для Objective-C я решил использовать Dictionary для этого.

@objc protocol Validation { 
    func validate(value:String?) -> [NSNumber : ValidationErrorType] 
} 

И результат:

метод не может быть членом @objc протокола, поскольку его тип результата не может быть представлена ​​в Objective-C

Не могли бы вы поделиться вам «мнение о том, что я делаю неправильно?

+0

Что такое 'ValidationErrorType'? – vadian

+0

ValidationErrorType это перечисление: int –

ответ

1

Метод имеет ValidationErrorType в результате с Dictionary, и я думаю, что это мешает вам преодолеть протокол. Чтобы решить проблему, вы должны сделать ее objc совместимой или изменить возвращаемое значение непосредственно NSDictionary вот так.

@objc protocol Validation { 
    func validate(value:String?) -> NSDictionary 
} 
+0

Но в этом случае у меня проблема с оператором return, который теперь делает то, что возвращать типы перечисления –

+0

Вы можете вернуть целое число enum для этого, прочитайте это [SO answer] (http://stackoverflow.com/ а/28838918/6433023) –

Смежные вопросы