2014-04-17 25 views
0

中的對象,布爾邏輯和裝箱零我想返回一個NSDictionary,它可能包含一個鍵的NSError值,如果沒有,應該包含一個空值。我知道我實際上無法將值設置爲零,因爲它不是一個對象,但爲什麼我不能使用||運算符返回NSNull如果我的NSError是零?Objective-C

if (requestError || ![matches count]) { 
    return @{@"success": @NO, 
      @"error": requestError || [NSNull null], 
      @"country": country}; 
} 

我得到的錯誤是Collection element of type 'int' is not an Objective-C object。我知道nil是一個int值,但爲什麼nil || NSObject不能保證NSObject將被返回?

+0

語法錯了,它會變成條件嗎? TrueResult:FalseResult – Pochi

回答

2

||運算符返回一個布爾值,所以requestError || [NSNull null]返回YESNO。您可以使用三元運算符代替:

@"error": requestError ? requestError : [NSNull null], 
+0

謝謝。我知道這是一個選擇,但我想確保我明白爲什麼。我習慣於在使用'||'在對象中進行故障時非常方便的地方進行紅寶石。 – emkman

+3

您可以通過執行@「error」來簡化它:(requestError?:[NSNull null]), – Christian

+0

@Christian這很有趣。與賦值一起使用基本上等價於或等於。 – emkman