2015-08-26 2 views
2

У меня естьбыстры нельзя назвать isKindOfClass с Последовательностью

let fieldValue: AnyObject? 

, если я хочу, чтобы проверить, если это NSString, это нормально:

fieldValue!.isKindOfClass(NSString) 

Но когда я пытаюсь проверить, если это строка, то она дают ошибку:

fieldValue!.isKindOfClass(String) 
Cannot call value of non-function type '((AnyClass) -> Bool)!' 

ответ

6

isKindOfClass() работы с классами которые являются подклассом NSObject.

Вы можете использовать fieldValue is String.

5

использование 'есть'

if fieldValue is String { 
// 
} 
-3

вы можете проверить, если это строка, делая что-то вроде этого:

var uiasd = [AnyObject]() 

uiasd = ["asd", "asdf"] 

if uiasd[0] .respondsToSelector("stringByAppendingFormat:") { 
    println("this is a string") 
} 

это тоже работает теперь, когда вы изменяли вопрос:

var uiasd: AnyObject? 

uiasd = "asdf" 

if uiasd! .respondsToSelector("stringByAppendingFormat:") { 
    println("asdfasdfkjgkhkjhkjhkjhkj") 
} 
только
+1

«' replysToSelector («stringByAppendingFormat:») '« совсем не интуитивно или безопасно. 'String' является подходящим решением для вопроса OP. – jtbandes

+1

Несомненно. 'class C {@objc func stringByAppendingFormat (_: Int) {}}' – jtbandes

+0

, который не является интуитивным, JtBandes, и как таковой, это недействительный ответ – Loxx