Có hai tình huống:
Có thể là một đối tượng [NSNull null]
, hoặc là không thể.
Ứng dụng của bạn thường không nên sử dụng [NSNull null];
bạn chỉ sử dụng nó nếu bạn muốn đặt một đối tượng " null " vào một mảng hoặc sử dụng nó làm giá trị từ điển. Và sau đó bạn nên biết mảng nào hoặc từ điển có thể chứa giá trị null và cái nào có thể không.
Nếu bạn nghĩ rằng một mảng không bao giờ chứa [NSNull null]
các giá trị, thì đừng kiểm tra nó. Nếu có [NSNull null]
, bạn có thể nhận được một ngoại lệ nhưng điều đó là tốt: ngoại lệ Objective-C chỉ ra lỗi lập trình. Và bạn có một lỗi lập trình cần sửa bằng cách thay đổi một số mã.
Nếu một đối tượng có thể [NSNull null]
, thì bạn kiểm tra điều này khá đơn giản bằng cách thử nghiệm
(object == [NSNull null])
. Gọi isEqual
hoặc kiểm tra lớp của đối tượng là vô nghĩa. Chỉ có một [NSNull null]
đối tượng và toán tử C cũ đơn giản kiểm tra xem nó có ổn không theo cách đơn giản và hiệu quả nhất.
Nếu bạn kiểm tra một NSString
đối tượng không thể[NSNull null]
(vì bạn biết nó không thể [NSNull null]
hoặc vì bạn chỉ kiểm tra xem nó có khác không [NSNull null]
, thì bạn cần tự hỏi mình muốn xử lý một chuỗi rỗng như thế nào, đó là một chuỗi có độ dài 0. Nếu bạn coi nó là một null
chuỗi như thế nil
, sau đó kiểm tra (object.length == 0)
. object.length sẽ trả về 0 nếu object == nil
, vì vậy kiểm tra này bao gồm các đối tượng và chuỗi không có độ dài 0. Nếu bạn xử lý một chuỗi có độ dài 0 khác với chuỗi nil, chỉ cần kiểm tra xem object == nil
.
Cuối cùng, nếu bạn muốn thêm một chuỗi vào một mảng hoặc một từ điển và chuỗi đó có thể là không, bạn có thể chọn không thêm nó, thay thế nó bằng @""
hoặc thay thế nó bằng [NSNull null]
. Thay thế nó bằng @""
có nghĩa là bạn mất khả năng phân biệt giữa "không có chuỗi" và "chuỗi có độ dài 0". Thay thế nó bằng[NSNull null]
có nghĩa là bạn phải viết mã khi bạn truy cập vào mảng hoặc từ điển kiểm tra [NSNull null]
các đối tượng.