Parse / Swift - “AnyObject不能转换为String

时间:2014-10-06 12:49:34

标签: swift parse-platform

我尝试使用PFObjects数组中的项目填充表格视图:

var obj: PFObject = self.usersArray[indexPath.row] 
cell.textLabel?.text = obj.objectForKey("username") 

但如果我这样做,我会得到编译器错误:" AnyObject不能转换为String"
这就是我一直用Objective-C做的方式,我该怎么解决这个问题呢?

2 个答案:

答案 0 :(得分:3)

您需要明确强制转换以避免此错误:

cell.textLabel?.text = obj.objectForKey("username") as String

这是因为obj.objectForKey(...)返回类型为AnyObject的对象,而Swift不允许将其隐式地转换为其他类型,而Objective-C确实如此(想象它必须写 {目标-C中的{1}} (NSString *)

答案 1 :(得分:0)

为什么不以更简单的方式编写代码并停止使用objectForKey。在最新的Parse库中,PFObject支持使用[]表示法(documentation)直接访问自定义对象的属性。

为什么textLabel是可选的?你应该在使用它之前解开它。因此,如果?未被声明为可选项,请将!替换为textLabel或将其完全删除。

基本上你的代码看起来像这样:

var obj: PFObject = self.usersArray[indexPath.row] 
cell.textLabel!.text = obj["username"] as NSString // Remove ! if textLabel is not an optional

请告诉我这是否适合您。