2015-09-25 75 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。

相關問題