2010-09-20 12 views
5

Zrobiłem klasy, która ma kilka NSStrings jako właściwości. Jeśli mam obiekt tej klasy, to skąd mogę wiedzieć, czy obiekt jest zerowy (tj. Wszystkie właściwości NSString są zerowe).Jak sprawdzić, czy obiekt jest zerowy?

Moja klasa wygląda to

// 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 

Sprawdzam to tak i nie działa

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

Co masz na myśli, mówiąc, że nie działa? Czy obiekt jest zerowy, ale kod nie zostanie wykonany? Spróbuj uruchomić program w trybie debugowania, aby zobaczyć, jaka jest rzeczywista wartość myObject. – Vladimir

+0

Co mam na myśli to, że zainicjowany obiekt jest postrzegany jako niezerowy, mimo że nie dałem żadnych wartości w obiekcie. –

Odpowiedz

7

Jeśli mam obiekt tej klasy, to jak mogę wiedzieć, czy obiekt jest zerowy (tj. Wszystkie właściwości NSString są zerowe).

Obiekt nie jest zerowy tylko dlatego, że wszystkie jego właściwości są zerowe. Jednakże, jeśli chcesz wiedzieć, jeśli obie właściwości strun Twojego obiektu są zerowe, to załatwi:

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

Uwaga: jestem w obozie, że nie chce leczyć wskazówek jak logicznych tj. ja wolę powyższy od

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

który jest funkcjonalnie identyczny.

3
if (!obj) 
    // obj = nil 

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

Aby sprawdzić, czy wszystkie właściwości są zerowe myślę, że będzie lepiej stworzyć specjalną metodę dla twojej klasy.

+0

Jeśli (! Obj) nie działa na mojej klasie. Myślę, że działa tylko na klasach NS –

+0

if() sprawdza, czy wartość jest false (0) lub true (! = 0), więc powinna działać na każdym typie - liczba, c-wskaźnik, obiekt obj-c ... Może być sprawdzany obiekt nie został zainicjalizowany? – Vladimir

+0

Używam niestandardowej klasy. Zobacz moją edycję. –

Powiązane problemy