使用predicateWithFormat,%@被「」包圍。我們需要爲鍵使用%K。爲什麼%@在predicateWithFormat和stringWithFormat之間有不同的表現?
例如[NSPredicate predicateWithFormat @"%@ == %@" ,@"someKey",@"someValue"]
成爲
"someKey" == "someValue"
雖然在stringWithFormat,%@不被包圍 「」
[NSString stringWithFormat @"%@ == %@" ,@"someKey",@"someValue"]
成爲someKey == someValue
爲什麼不同?
我錯過了什麼嗎?
爲什麼在predicateWithFormat中使用%@作爲「Value」,因爲它不是stringWithFormat中的%@意思。爲什麼不創建一個新的表示法,例如%V來獲取「Value」和%@仍然像stringWithFormat對應值那樣。
爲什麼蘋果決定相同的符號,即%@應該有不同的含義。
他們真的不一樣吧?我錯過了什麼?
在我問這個問題之前,我完全理解了這一點。但是爲什麼在謂詞中使用%@作爲「Value」。爲什麼不創建一個新的表示法,例如%V來獲取「Value」和%@仍然像stringWithFormat對應值那樣。 –
嗯,這不完全正確'%@'只會在字符串對象上添加引號,例如,如果您將它與'NSNumber'(例如'age ==%@')一起使用,它將**不引用該值(它會擴展到'age == 10')。 – Alladinian
我知道,但即使對於字符串對象,%@也不會爲stringWithFormat添加引號。所以基本上,%@對於字符串對象的predicateWithFormat行爲異常。不尋常是不好的。 –