Тип STTwitter swift «Any» не имеет элементов индекса в методе getHomeTimeline.

Все, я действительно новичок в разработке iOS, а это значит, что я новичок в Swift. Я знаю другие языки программирования, такие как С#, PHP, Node JS и т. д. Однако я застрял и не могу найти ответы.

Я работаю с STTwitter и пытаюсь узнать статус своего Twitter. Я могу вытащить его нормально, используя обычный метод. Когда я пытаюсь добавить цикл, я получаю сообщение об ошибке: Тип «Любой» не имеет элементов нижнего индекса.

// Verifying Twitter API creds
    twitter?.verifyCredentials(userSuccessBlock: { (username, userId) in

        // Get Twitter Timeline Status
        twitter?.getHomeTimeline(sinceID: nil, count: 10, successBlock: { (statuses) -> Void in

            for status in statuses! {
                print(status["text"])
            }

        }, errorBlock: { (error) in
            print(error)
        })

        print(username, userId)
    }, errorBlock: { (error) in
        print(error)
    })

Вот скриншот фактического редактора с ошибкой

Ошибка находится в «статусе» внутри оператора печати внутри цикла for.

Любая помощь будет здорово!


person Optimus24    schedule 15.02.2018    source источник
comment
Кажется, что эта библиотека написана на Objective-C, и getHomeTimeline принимает блок, которому передается NSArray *, который переводит в Swift в [Any], поэтому вы должны перевести этот Any в реально существующий тип данных. Если вы уверены, что это словарь, сделайте так: (status as? NSDictionary)?["text"]   -  person user9335240    schedule 15.02.2018
comment
ОМГ Это сработало!!! Большое спасибо @user9335240   -  person Optimus24    schedule 15.02.2018


Ответы (1)


getHomeTimeline принимает «блок» (или закрытие Swift), которому передается NSArray *, который в Swift переводится в [Any]. Так

    // Get Twitter Timeline Status
    twitter?.getHomeTimeline(sinceID: nil, count: 10, successBlock: { (statuses) -> Void in

        for status in statuses! {
            print((status as? NSDictionary)?["text"])
        }

    }
person user9335240    schedule 15.02.2018