无法下标“[AnyObject]”类型的值?索引类型为 'UInt32'
Cannot subscript a value of type '[AnyObject]?' with an index of type 'UInt32'
下面代码的目标是 - 从 parse.com class 中获取名为 OnlineUsers
的所有对象,然后在 0
和 [= 之间找到一个随机数14=] 然后将该对象用于某事。
问题是,当我尝试获取位于 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:
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
}
}
错误信息:
results
似乎是一个可选数组的事实:[AnyObject]?
。
因此,如果你想通过下标访问其中一个值,你必须先解包数组:
if let userObject: AnyObject = results?[randomNumberCast]
下面代码的目标是 - 从 parse.com class 中获取名为 OnlineUsers
的所有对象,然后在 0
和 [= 之间找到一个随机数14=] 然后将该对象用于某事。
问题是,当我尝试获取位于 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:
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
}
}
错误信息:
results
似乎是一个可选数组的事实:[AnyObject]?
。
因此,如果你想通过下标访问其中一个值,你必须先解包数组:
if let userObject: AnyObject = results?[randomNumberCast]