Làm cách nào để kiểm tra xem đối tượng NSNumber có phải là không có hoặc không?kiểm tra xem NSNumber có trống không
OK nil cũng dễ dàng:
NSNumber *myNumber;
if (myNumber == nil)
doSomething
Nhưng nếu đối tượng đã được tạo ra, nhưng không có giá trị trong đó bởi vì chuyển nhượng thất bại, làm thế nào tôi có thể kiểm tra điều này? Sử dụng một cái gì đó như thế này?
Có phương pháp chung để kiểm tra các đối tượng trống rỗng như đối với NSString có sẵn (xem post) này không?
Ví dụ 1
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *emptyNumber = [dict objectForKey:@"emptyValue"];
Những giá trị không emptyNumber
chứa? Làm cách nào để kiểm tra xem emptyNumber
có trống không?
Ví dụ 2
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSString *myString = [dict objectForKey:@"emptyValue"];
if (myString == nil || [myString length] == 0)
// got an empty value
NSNumber *emptyNumber=nil;
gì sẽ xảy ra nếu tôi sử dụng này sau khi emptyNumber
được thành lập để nil?
[emptyNumber intValue]
Tôi có được không?
Ví dụ 3
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setValue:@"" forKey:@"emptyValue"];
NSNumber *myEmptyValue = [dict objectForKey:@"emptyValue"];
if (myEmptyValue == nil)
// NSLog is never called
NSLog(@"It is empty!");
Giống như cách này NSLog không bao giờ được gọi. myEmptyValue
không phải là nil
và không phải là NSNull
. Vì vậy, nó có chứa một số tùy ý?
@ [0.7] sẽ cung cấp NSNumber chắc chắn không phải 0, nhưng intValue sẽ trả về 0. Vì vậy, đó là một thử nghiệm xấu. – gnasher729
Được bình chọn cho các chi tiết tuyệt vời giúp giải thích điều tôi đang xử lý từ mặc định. NSNumber * savedPin = [[NSUserDefaults standardUserDefaults] valueForKey: @ "someKey"]; trả về một đối tượng có lớp __NSCFConstantString và do đó so sánh với nil không thành công. CẢM ƠN! –