Как преобразовать тип AnyObject в Int в Swift

Я ищу ключ вArray изDictionarys и я хочу преобразовать значение результата вInt значение. Это то, что я пытался.

if let result = lasrIDArray.flatMap( {$0["\(self.selectedTitle)"]} ).first {      
    print(result)

    if let number = result as? NSNumber {
        let tag = number.integerValue
        let currentScroll = view.viewWithTag(Int(api.selectedCatID)!) as! UIScrollView
        let lastImgVw = currentScroll.viewWithTag(tag) as! UIImageView
        print(lastImgVw.frame.origin.y)
    }
}

Ноif let number = result as? NSNumber не работает, как ожидалось. Как правильно преобразовать это значение?

 Nirav D14 июл. 2016 г., 10:50
В ответ вы получаетеString или жеInt пожалуйста, проверьте это?
 meaning-matters14 июл. 2016 г., 10:53
Шаг 1: Чисто отформатируйте ваш код.
 Irrd14 июл. 2016 г., 11:16
@SubinKKuriakose не может вызвать инициализатор для типа Int со списком аргументов типа (AnyObject) при var num = Int (result)
 Subin K Kuriakose14 июл. 2016 г., 10:50
var num = Int (результат), если num! = nil {println ("Действительное целое число")} else {println ("Недействительное целое число")}

Ответы на вопрос(3)

Здесь я привел пример для преобразования Anyobject в Int и String

var idInt : Int = 0
if let ids: AnyObject = responseDict["id"] {
    if let idsInt = ids as? Int{
        idInt  = idsInt
        print(idInt)
    }
}


var nameString : String = ""
    if let name: AnyObject = responseDict["name"] {
        if let nameStr = name as? String{
            nameString  = nameStr
            print(nameString)
        }
    }
Решение Вопроса

Я не знаю ваш код, но это будет полезно для вас.

Вы можете получить свойAnyObject ценить таким образом ...

let data :AnyObject = "100"
let score = Int(data as! String)! //Force Unwrap optional value it will be dengerious for nil condition.
print(score)

Или попробуйте этот способ также

let hitCount = "100"
let data :AnyObject = hitCount as AnyObject //sometime Xcode will ask value type
let score = Int(data as? String ?? "") ?? 0
print(score)
Выход -

Swift 3.1 и Swift 4
let hitCount = "100"
let data :Any = hitCount //Any type Value passing here 
let score = Int(data as? String ?? "") ?? 0
print(score)
Выход -

 dfri14 июл. 2016 г., 11:43
Это не хороший совет (принудительное преобразование,!).
 aircraft10 нояб. 2016 г., 09:27
@dfri в вашемOr try this way also: еслиdata:Anyobject'abc', может использовать ваш метод?
 Anand Nimje14 июл. 2016 г., 13:49
Так что это лучший способ получить необязательное значение для необязательного. Скажи мне @dfri ??
 dfri14 июл. 2016 г., 13:59
Читатьэтот отличный канонический ответ на предмет. Цитата:"Как общее правило,вы никогда не должны явно распаковывать опционально с! оператор».
 Dearwolves20 февр. 2017 г., 10:23
Требуется много преобразований, чтобы получить то, что просят. Почему это Свифт !! ..
 dfri10 нояб. 2016 г., 11:43
@aircraft прости, я не слежу. Что вы подразумеваете под "вваш Or try this way alsoЗаметьте, что нить, на которую я ссылаюсь, является (отличным) каноническим ответом на опциональные вопросы в целом, но я не тот, кто его написал.

они будут декодированы как NSNumber или NSString.

Вы можете использовать эту функцию:

func intValueForKey(key: String, inDictionary dictionary: [String: AnyObject]) throws -> Int {
    if let value = dictionary[key]?.integerValue {
        return value
    } else {
        throw NSError(domain: "Invalid key", code: -1, userInfo: nil)
    }
}

Ваш ответ на вопрос