2010-08-11 36 views

Trả lời

28

Trường hợp NSNumber có thể hữu ích. Ví dụ:

NSNumber *yesNoOrNil; 

yesNoOrNil = [NSNumber numberWithBool:YES]; // set to YES 
yesNoOrNil = [NSNumber numberWithBool:NO]; // set to NO 
yesNoOrNil = nil; // not set to YES or NO 

Để xác định giá trị của nó:

if (yesNoOrNil == nil) 
{ 
    NSLog (@"Value is missing!"); 
} 
else if ([yesNoOrNil boolValue] == YES) 
{ 
    NSLog (@"Value is YES"); 
} 
else if ([yesNoOrNil boolValue] == NO) 
{ 
    NSLog (@"Value is NO"); 
} 

Trên tất cả các nền tảng Mac OS X sau 10,3 và tất cả các nền tảng hệ điều hành iPhone, phương pháp -[NSNumber boolValue] được đảm bảo để return YES hoặc NO.

+0

Đồng ý rằng đây là cách gần nhất để làm điều đó một cách tự nhiên, nhưng tôi ghét phải làm theo cách này. Nó dẫn đến các lỗi cứng tại chỗ nếu dev quên rằng thuộc tính là 'NSNumber *' và giả sử nó là 'BOOL', trong trường hợp chúng kiểm tra' if (yesNoOrNil) 'và nó cho kết quả không chính xác mà không có bất kỳ cảnh báo nào . –

1

Tôi nghĩ bạn sẽ cần sử dụng một số lớp học cho điều đó, ví dụ: quấn bool để NSNumber đối tượng.

+0

+1 Bạn chắc chắn không * cần * để sử dụng một lớp học, nhưng đó là cách tốt nhất. – walkytalky

+0

Vì vậy, giống như ... làm thế nào để bạn làm điều đó? –

+0

@alexgray, giống như trong câu trả lời được chấp nhận – Vladimir

Các vấn đề liên quan