Bazen iki NSString
işte bu şekilde aynı olup olmadığını test eder kodunu bulmak: ŞimdiNSString karşılaştırması arasında bir fark var: ve isEqual (ToString) :?
if ([str1 compare:str2] == NSOrderedSame) {
// Do something
}
, bu isEqualToString:
kullanmaktan daha az okunabilir olduğuna ve aynı zamanda, bazı kötü yan etkileri vardır str1 == nil
eğer gibi (..) doğru olarak değerlendirir veya Apple docs'a göre str2 == nil
tahribatı bize zarar verebilir. (Edit: Hatfinch'in işaret ettiği gibi, str1 == nil && str2 == nil
her iki değişkenin de yanlış sonuca sahip olması durumunda, bu durumda kendinizi yine de bu duruma karşı korumanız gerekir).
Ancak, şirketimdeki kodlardaki bu ifadelere karşı haçlı seferi öncesinde, önemli bir noktayı kaçırmadığımdan emin olmak istedim.
Bu yüzden sorum, temel olarak aşağıya doğru kaymaktadır: compare:
- NSOrderedSame
ve isEqual:
arasında bir fark var mı? docs Okuma
NB dizge1 ve str2 hem nil ise, [str1 isEqualToString: str2] – hatfinch
Doğru ... ya doğru sonucu döndüren, ancak ile karşılaştırmak değildir: dize olmak nil da sorun değil, . Yani, örneğin [@ "Foo" isEqual: somestring] nil için somestring olmadan. Bu karşılaştırmak ile yapamazsınız: – Alfonso
Tuzaklar, karşılaştırma: ile değil, ancak -compare: 've' isEqual: 'işlevlerinin yan yana karşılaştırılmasında, hataların belirli bir hata sınıfına (BOOL sonucuyla birlikte nil alıcıya) duyarlı olarak vurgulanır.) ikincisine sessiz kalırken yanlış yorumlanabilir. – hatfinch