【问题标题】:Parse/Swift - "AnyObject is not convertible to StringParse/Swift - “AnyObject 不能转换为字符串
【发布时间】:2026-01-07 13:30:02
【问题描述】:

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

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

但如果我这样做,我会得到编译器错误:“AnyObject 不能转换为字符串”
这就是我在使用 Objective-C 时一直这样做的方式,我该如何解决这个问题?

【问题讨论】:

  • 与您的问题无关,但您可以使用较短的语法 obj["username"] 而不是 obj.objectForKey("username") :)

标签: swift parse-platform


【解决方案1】:

您需要显式转换以避免此错误:

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

这是因为obj.objectForKey(...) 返回一个AnyObject 类型的对象,Swift 不允许将其隐式转换为另一种类型,而 Objective-C 则可以(想象一下,必须编写 (NSString *)obj.objectForKey(...) 在 Objective-C 中)。

【讨论】:

    【解决方案2】:

    为什么不以更简单的方式编写代码并停止使用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
    

    让我知道这是否适合你。

    【讨论】: