Twitter Search Api 1.1 错误:无法将“__NSCFDictionary”类型的值转换为“NSArray”

Posted

技术标签:

【中文标题】Twitter Search Api 1.1 错误:无法将“__NSCFDictionary”类型的值转换为“NSArray”【英文标题】:Twitter Search Api 1.1 ERROR: Could not cast value of type '__NSCFDictionary' to 'NSArray' 【发布时间】:2015-09-17 23:31:00 【问题描述】:

此代码是在 twitter 上搜索主题标签,但它给出了错误提示 无法将“__NSCFDictionary”类型的值转换为“NSArray”

当我使用以下 URL 访问我的家庭时间线时,相同的代码可以正常工作 https://api.twitter.com/1.1/statuses/home_timeline.json

func getTimeLine() 

    let accountType = account.accountTypeWithAccountTypeIdentifier(
        ACAccountTypeIdentifierTwitter)

    self.account.requestAccessToAccountsWithType(accountType, options: nil,
        completion: (success: Bool, error: NSError!) -> Void in

            if success 
                let arrayOfAccounts =
                self.account.accountsWithAccountType(accountType)

                if arrayOfAccounts.count > 0 

                    let twitterAccount = arrayOfAccounts.last as! ACAccount

                    let requestURL = NSURL(string:
                        "https://api.twitter.com/1.1/search/tweets.json?q=%23baseball&result_type=recent%3F")
                      let parameters = ["count" : "10"]

                    let postRequest = SLRequest(forServiceType:
                        SLServiceTypeTwitter,
                        requestMethod: SLRequestMethod.GET,
                        URL: requestURL,
                        parameters: nil)

                    postRequest.account = twitterAccount

                    postRequest.performRequestWithHandler(
                        (responseData: NSData!, urlResponse: NSHTTPURLResponse!, error: NSError!) -> Void in
                            var err: NSError?
                            self.array = NSJSONSerialization.JSONObjectWithData(responseData, options: NSJSONReadingOptions.MutableLeaves, error: &err) as! [AnyObject**strong text**]
                            if self.array.count != 0 
                                dispatch_async(dispatch_get_main_queue()) 
                                    self.mycollectionView.reloadData()
                                
                            
                    )
                
            
            else 
                println("Failed to access account")
            
    )

【问题讨论】:

【参考方案1】:

尝试对NSDictionary 进行强制转换。它应该可以解决您的问题。

self.array = NSJSONSerialization.JSONObjectWithData(
    responseData,
    options: NSJSONReadingOptions.MutableLeaves, error: &err
) as! NSDictionary

也许这是来自 twitter 的正确回报。

【讨论】:

以上是关于Twitter Search Api 1.1 错误:无法将“__NSCFDictionary”类型的值转换为“NSArray”的主要内容,如果未能解决你的问题,请参考以下文章

Twitter获取搜索推文API不适用于哈希标签

Twitter api 1.1 图片未显示在提要中

Twitter API 返回错误 215,错误的身份验证数据

Webpack 开发服务器中 Twitter api 调用的 CORS 问题

如何从Twitter Search API创建pandas数据框?

如何从 developer.twitter.com 运行示例