2015-04-26 165 views

回答

52

问题不在于演员,而是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]使用optional chaining先解开self.objects,然后调用它的下标。


随着斯威夫特2,你也可以使用guard statement

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 
3

我的解决方法是..

  1. 如果您确定该tableview将只包含用户尝试将AnyObject的Array对象转换为PFUser的Array。然后使用它。
+0

仍然给出错误,但这个工程,不知道为什么:'var user2 = self.objects![indexPath.row] as! PFUser' – user1406716

+0

由于对象数组是可选的[AnyObject]? – Amit89

+0

是的。感谢您的帮助。 – user1406716

5

我遇到同样的问题,并解决它像这样:

let scope : String = searchBar.scopeButtonTitles![searchBar.selectedScopeButtonIndex] as! String 

对于你的情况,你可能会这样做:

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

只需添加一个! (惊叹号)对象后,像这样:

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

问题解决了,我:)

0

我有以下行类似的问题:

array![row] 

我不明白的地方这个问题来自于;如果我将row替换为1这样的编码,则编译并运行的代码没有任何问题。

然后,我不得不将其更改为这个欢快的想法:

array![Int(row)] 

和它的工作。对于我的生活,我不明白为什么给一个数组索引-1在理论上是合法的,但你去。下标是无符号的,对我来说是有意义的,但也许只是我;我将不得不询问Chris

相关问题