ios - 无法使用类型为 '[AnyObject]?' 的索引下标类型为 'UInt32' 的值

标签 ios swift casting swift-array

下面代码的目标是 - 从名为 OnlineUsers 的 parse.com 类中获取所有对象,然后在 0results 之间找到一个随机数.count 然后将该对象用于某些事情。

问题是,当我尝试获取位于 results[randomNumber] 位置的对象时,出现以下错误。如果我尝试下面的 results[randomNumberCast],我会得到同样的错误。

我该如何解决这个问题?

func findRandomOnlineUser() {
    if PFUser.currentUser() != nil {
        var user1 = PFUser.currentUser()
        var user2 = PFUser()



        //find user2, i.e. some user who is online right now
        //Showing OnlineUsers only
        let onlineUsersQuery = PFQuery(className: "OnlineUsers")
        onlineUsersQuery.findObjectsInBackgroundWithBlock({ (results:[AnyObject]?, error:NSError?) -> Void in

            if results!.count > 0 {
                self.mLog.printToLog("launchChatwithRandomUser() -- There are more than zero objects in OnlineUsers")

                //help: http://stackoverflow.com/questions/26770730/apple-swift-placing-a-variable-inside-arc4random-uniform
                let randomNumber = arc4random_uniform(UInt32(results!.count))
                var randomNumberCast = Int(randomNumber)

                if let userObject = results[randomNumberCast] {
                    user2 = userObject["user"] as! PFUser
                } else {
                    //handle the case of 'self.objects' being 'nil'
                }

    } else {
        //TODO: Show a prompt that user is not logged in and then take user to Login Screen
    }


}

错误信息:

Screenshot showing the error message

最佳答案

results 似乎是一个可选数组:[AnyObject]?。 因此,如果你想通过下标访问它的值之一,你必须先解包数组:

if let userObject: AnyObject = results?[randomNumberCast]

关于ios - 无法使用类型为 '[AnyObject]?' 的索引下标类型为 'UInt32' 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30296035/

相关文章:

swift - 核心数据获取谓词 "not contains"?

sql - jooq 中的 CASE 语句?

python - 如何将 bool 类型的 numpy 数组压缩为 uint8,大小为 1/8

.net - 带有 Enum 的通用 T 并将 T 转换为 Enum

ios - 当我在 xcode 上从 iPad 切换到 iPhone "view as"时,一个场景看起来仍然像 iPad

iphone - 使用 NSDataDetector 检查电子邮件

ios - 从 UIWebView 迁移到 WKWebView

ios - 单面平台 (Box2D/Cocos2D)

iOS : Inverse Cosine