2015-09-13 3 views
2

У меня есть объект, который имеет свойство заклиненный:Swift: Есть ли способ проверить, будет ли объект отличен, поскольку AnyObject соответствует Equatable?

func value(key: String) -> AnyObject? 
func setValue(value: AnyObject?, key: String) 

Я хотел бы проверить, если значение возвращается из функции value с тем же ключом от двух различных объектов являются Equatable. Swift жалуется, потому что Equatable имеет ссылку Self и может использоваться только в дженериках. Есть ли способ проверить, не возвращается ли объект AnyObject из функции value в Equatable?

ответ

-3

Из-за изменений в Swift 2, я редактирую m'y ответить

Для проверки протокола соответствия, просто используйте is ключевое слово.

Но вы не можете сделать это, когда протокол использует Self (обратите внимание на капитал S).

Так что вы можете сделать:

if let myValue = myObject.value(myKey) as? Equatable { 
    ... 
} 
+3

Что вы предлагаете не работает. Быстрый компилятор выдает следующую ошибку: «Протокол« Equatable »может использоваться только в качестве общего ограничения, поскольку он имеет Self или связанные требования типа. – maxandron