Trong ứng dụng của tôi, có một cơ chế yêu cầu tại một điểm nhất định, hai số NSString
sẽ giống nhau để làm điều gì đó; vì một số lý do khi tôi so sánh hai, ngay cả khi chúng giống nhau, nó vẫn không nhận ra điều đó. Mã này là một cái gì đó như thế này:So sánh hai số NSStrings
NSString * aString = [self someMethodThatGetsAString];
NSString * bString;
BOOL areStringsTheSame = NO;
while (areStringsTheSame != YES) {
bString = [self someMethodThatTakesNSStringsFromAnArrey];
if (bString == aString) {
areStringsTheSame = YES;
{ }
Tôi thậm chí chèn một NSLog()
và chắc chắn rằng tại một điểm nhất định họ là như nhau (và như xa như tôi biết điều này là những gì ==
là viết tắt của ...), nhưng nó vẫn không vào được if
để thay đổi giá trị BOOL
.
Có cách nào khác để so sánh này không? Tui bỏ lỡ điều gì vậy?
Thật. Và đào sâu vào các nguyên tắc của OOP (hai đối tượng có cùng thuộc tính không nhất thiết phải là cùng một đối tượng). Nếu không, bạn sẽ gặp phải vấn đề này mỗi ngày trong cuộc sống của nhà phát triển của bạn :-) – vstrien
Rõ ràng '==' cũng hoạt động tốt để so sánh các chuỗi phân biệt chữ hoa chữ thường, vì cách Objective-C sử dụng các biến chuỗi. Ví dụ, khai báo một chuỗi A và chuỗi B, và làm '==' và bạn sẽ thấy chúng được lưu trữ trong cùng một địa chỉ. –