不能下标'[AnyObject]类型的值吗?索引类型为"UInt32"

use*_*716 3 casting ios swift swift-array

下面代码的目标是这样 - 从调用的parse.com类中获取所有对象OnlineUsers,然后在0和之间找到一个RANDOM数results.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
    }


}
Run Code Online (Sandbox Code Playgroud)

错误信息:

显示错误消息的屏幕截图

Dha*_*esh 6

事实results似乎是一个可选的数组:[AnyObject]?.因此,如果要通过下标访问其中一个值,则必须先打开数组:

if let userObject: AnyObject = results?[randomNumberCast]
Run Code Online (Sandbox Code Playgroud)