一尘不染

无法下标[AnyObject]的值?索引类型为Int

swift

这是在扩展PFQueryTableViewController的类中,并且出现以下错误。这些行将是PFUser唯一的。
为什么我无法投放?有没有解决的办法?

错误是:

Cannot subscript a value of [AnyObject]? with an index of type Int

…对于这一行:

var user2 = self.objects[indexPath.row] as! PFUser

在此处输入图片说明


阅读 209

收藏
2020-07-07

共1个答案

一尘不染

问题不在于演员,而是事实,它self.objects似乎是一个可选数组:[AnyObject]?
因此,如果要通过下标访问其值之一,则必须首先解开数组:

var user2: PFUser
if let userObject = self.objects?[indexPath.row] {
    user2 = userObject as! PFUser
} else {
    // Handle the case of `self.objects` being `nil`.
}

该表达式self.objects?[indexPath.row]使用可选的链接来首先解包self.objects,然后调用其下标。


从Swift
2开始,您还可以使用guard语句

var user2: PFUser
guard let userObject = self.objects?[indexPath.row] else {
    // Handle the case of `self.objects` being `nil` and exit the current scope.
}
user2 = userObject as! PFUser
2020-07-07