3

以下のコードの目的はこれです - 呼び出された parse.com クラスからすべてのオブジェクトを取得し、 と の間の乱数OnlineUsersを見つけて、そのオブジェクトを何かに使用します。0results.count

問題は、 position でオブジェクトを取得しようとすると、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
    }


}

エラーメッセージ:

エラー メッセージを示すスクリーンショット

4

1 に答える 1

6

resultsオプションの配列と思われる事実: [AnyObject]?. したがって、添え字を介してその値の 1 つにアクセスする場合は、最初に配列をアンラップする必要があります。

if let userObject: AnyObject = results?[randomNumberCast]
于 2015-05-18T06:13:59.223 に答える