2010-09-20 35 views
5

Tôi đã tạo một Lớp có nhiều NSStrings làm thuộc tính. Nếu tôi có một đối tượng của lớp này, thì làm thế nào tôi có thể biết nếu đối tượng là nil (tức là tất cả các thuộc tính NSString là không).Cách kiểm tra xem đối tượng có phải là số không

Lớp học của tôi trông như thế này

// MyClass.h 
#import <Foundation/Foundation.h> 


@interface MyClass : NSObject <NSCoding> { 
NSString *string1; 
NSString *string2; 

} 
@property (nonatomic, retain) NSString *string1; 
@property (nonatomic, retain) NSString *string2; 

@end 

Tôi đang kiểm tra nó như thế này và nó không hoạt động

if (SecondViewController.myObject==nil) { 
NSLog(@"the object is empty"); 
} 
+0

Bạn có ý nghĩa gì khi không hoạt động? Bạn có đối tượng nil nhưng mã không được thực hiện? Hãy thử chạy chương trình của bạn trong chế độ gỡ lỗi để xem giá trị thực của myObject là gì. – Vladimir

+0

Ý của tôi là đối tượng khởi tạo được xem là không phải là nil, mặc dù tôi không đưa ra các chuỗi trong đối tượng bất kỳ giá trị nào. –

Trả lời

7

Nếu tôi có một đối tượng của lớp này, thì làm sao tôi có thể biết nếu đối tượng là con số không (ví dụ: tất cả các thuộc tính NSString là nil).

Một đối tượng không phải là chỉ vì tất cả thuộc tính của nó là không. Tuy nhiên, nếu bạn muốn biết nếu cả hai thuộc tính chuỗi các đối tượng của bạn là con số không, điều này sẽ làm các trick:

-(BOOL) bothStringsAreNil 
{ 
    return [self string1] == nil && [self string2] == nil; 
} 

Lưu ý: Tôi đang ở trại mà không thích đối xử với con trỏ như boolean tức là tôi thích phần trên để

-(BOOL) bothStringsAreNil 
{ 
    return ![self string1] && ![self string2]; 
} 

có chức năng giống hệt nhau.

3
if (!obj) 
    // obj = nil 

if (!obj.property) 
    // property = nil 

Để kiểm tra xem tất cả các thuộc tính là con số không Tôi nghĩ rằng nó sẽ tốt hơn để tạo ra một phương pháp đặc biệt trong lớp học của bạn cho điều đó.

+0

Nếu (! Obj) không hoạt động trên lớp của tôi. Tôi nghĩ rằng nó chỉ hoạt động trên các lớp NS –

+0

if() kiểm tra xem giá trị là false (0) hoặc true (! = 0) vì vậy nó sẽ hoạt động trên bất kỳ loại - số, c-pointer, obj-c đối tượng ... đối tượng bạn kiểm tra không được khởi tạo? – Vladimir

+0

Tôi đang sử dụng một lớp tùy chỉnh. Xem chỉnh sửa của tôi. –

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