2015-05-02 83 views

回答

0

Swift语言不会执行隐式转换,如果两个不同类型的操作数必须将其中的任何一个转换为另一个操作数类型以应用二元运算符。

所以在你的情况下,将AnyObject类型的操作数转换为字符串。

2

它看起来像obj是一个NSDictionary。 NSDictionaries包含每个键的匿名值。所以当你查找一个键时,这个值是AnyObject类型的。您不能将字符串追加到AnyObject。

你将不得不使用更详细的声明:

obj["Participants"] = obj["Participants"] as! String + kCurrentUser.username 

(如果obj是一个可变字典只会工作,如果它是一成不变的,它会崩溃。)

+0

它也将崩溃,如果'obj'具有该键的值'“参与者”'或者如果它有一个值,该值不能被解释为一个字符串' ',所以或许我们不要滥用'!'运算符? – nhgrif

+0

我怀疑'obj [“Participants”]'可能是一个数组(他提到他试过'.append'加'Participants'是一个集合的好名字),并且他试图在其中添加一个字符串反对重新分配)... – Alladinian

+0

在这个声明中,是不是第一个'!'多余的?因为你已经使用'!'将它解开为'String'? – milo526

0

只有几个周成迅速被这个打击,但如前所述“雨燕语言不做隐式类型转换,..”

对我来说,我有这样的代码:

if objects == nil { 
    objects = NSMutableArray() 
} 

转换为:

if objects.count == 0 { 
    objects = NSMutableArray() 
} 
相关问题