【发布时间】:2015-05-02 19:30:09
【问题描述】:
我想在 Parse using Swift 中将当前用户的用户名添加到对象 Participants 的末尾,但标题中出现错误。
obj["Participants"] += kCurrentUser.username
我不知道如何解决它。我已经尝试过.append 和其他一些方法。大家有什么想法吗?
【问题讨论】:
标签: swift object parse-platform
我想在 Parse using Swift 中将当前用户的用户名添加到对象 Participants 的末尾,但标题中出现错误。
obj["Participants"] += kCurrentUser.username
我不知道如何解决它。我已经尝试过.append 和其他一些方法。大家有什么想法吗?
【问题讨论】:
标签: swift object parse-platform
看起来 obj 是一个 NSDictionary。 NSDictionaries 包含每个键的匿名值。因此,当您查找键时,其值是 AnyObject 类型。您不能将字符串附加到 AnyObject。
您必须使用更详细的语句:
obj["Participants"] = obj["Participants"] as! String + kCurrentUser.username
(仅当 obj 是可变字典时才有效。如果它是不可变的,它将崩溃。)
【讨论】:
obj 没有键"Participants" 的值,或者如果它有一个值并且该值不能解释为String,它也会崩溃,所以也许我们不要滥用! 运算符?
obj["Participants"] 可能是一个数组(他提到他尝试了.append 加上Participants 是一个很好的集合名称)并且他尝试在其中附加一个字符串(而不是重新分配)...
!不是多余的吗?因为您已经在使用 ! 将其解包为 String?
! 不需要。
Swift 语言不做隐式转换,如果两个不同类型的操作数,你必须将其中任何一个转换为另一个操作数类型才能应用二元运算符。
所以在你的情况下,将 AnyObject 类型的操作数转换为字符串。
【讨论】:
进入 swift 仅几周后就受到了这种影响,但正如前面提到的“Swift 语言不进行隐式类型转换,......”
对我来说,我有这个代码:
if objects == nil {
objects = NSMutableArray()
}
转换为:
if objects.count == 0 {
objects = NSMutableArray()
}
【讨论】: