2015-09-25 65 views
0

二元运算符“!=”不能被施加到型“布尔”的操作数和“NilLiteralConvertible”二元运算符“!=”不能被施加到型“布尔”的操作数和“NilLiteralConvertible”

。如果(!(object.isKindOfClass(的NSDictionary))=无)获取错误{

let paramString:NSMutableString = NSMutableString(); 
       (obj as! NSArray).enumerateObjectsUsingBlock({ (object, idx, stop) -> Void in 
        if ((object.isKindOfClass(NSDictionary)) != nil){ 
         let pair:NSDictionary? = object as? NSDictionary; 
         let textId:NSNumber? = pair?.objectForKey("TextId") as? NSNumber; 
         var content:NSString? = pair?.objectForKey("Content") as? NSString; 

         if ((content == nil) || (content?.length == 0)) { 
          content = " "; 
         } 

         if ((textId != nil) && (content != nil)) { 
          paramString.appendFormat("%ld:%@\n", textId!.integerValue, content!); 
         } 
        } 
       }); 
+2

请仅使用适合每个问题的标签。你的问题与苹果公司无关。并阅读标签说明。 [apple]标签清楚地表明不使用它。 – rmaddy

回答

5

替换您行:

if ((object.isKindOfClass(NSDictionary)) != nil){ 

这一行:

if object.isKindOfClass(NSDictionary) { 

语法isKindOfClass是:

func isKindOfClass(aClass: AnyClass!) -> Bool 

手段isKindOfClass将返回Bool,您可以将其与nil不能比拟的。这就是为什么编译器给你一个错误。

0

isKindOfClass返回一个Bool(一个truefalse值),而不是一个可选项。根据

if object.isKindOfClass(NSDictionary) { 
0

object.isKindOfClass(NSDictionary中))将返回一个布尔值(true或false):Bool s时,可以在条件语句中直接测试(!=的实际返回Bool),所以不要为nil测试如果它是该类的一部分或者不是。

我从来没有使用过Swift,但我猜你不能用!=来比较Bool和NilLiteralConvertible(nil)。你应该检查你的对象是否为零,然后检查object.isKindOfClass(NSDictionary))是否返回false。

相关问题