2010-09-20 7 views
5

J'ai créé une classe qui a plusieurs propriétés NSStrings. Si j'ai un objet de cette classe, alors comment puis-je savoir si l'objet est nul (c'est-à-dire que toutes les propriétés de NSString sont nulles).Comment vérifier si un objet est nul

Ma classe ressemble à ceci

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

Je vérifie comme ça et ça ne marche pas

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

Que voulez-vous dire par ne fonctionne pas? Est-ce que vous êtes un objet nul mais le code n'est pas exécuté? Essayez d'exécuter votre programme en mode débogage pour voir quelle est la valeur réelle de myObject. – Vladimir

+0

Ce que je veux dire, c'est que l'objet initialisé est vu comme non-nul, même si je n'ai donné aucune valeur aux chaînes de l'objet. –

Répondre

7

Si j'ai un objet de cette classe, alors comment puis-je savoir si l'objet est nul (c'est-à-dire que toutes les propriétés de NSString sont nulles).

Un objet n'est pas nul simplement parce que toutes ses propriétés sont nulles. Toutefois, si vous ne voulez savoir si les deux propriétés de chaîne de votre objet sont nuls, cela fera l'affaire:

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

Note: Je suis dans le camp qui n'aime pas traiter les pointeurs comme booléens c'est-à-dire que je préfère ce qui précède à

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

qui est fonctionnellement identique.

3
if (!obj) 
    // obj = nil 

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

Pour vérifier si toutes les propriétés sont nulles je pense qu'il serait mieux de créer une méthode spéciale dans votre classe pour cela.

+0

Si (! Obj) ne fonctionne pas sur ma classe. Je pense qu'il ne fonctionne que sur les classes NS –

+0

if() vérifie si la valeur est false (0) ou true (! = 0) donc il devrait fonctionner sur tout type - nombre, c-pointeur, objet obj-c ... Peut être l'objet que vous vérifiez n'est pas initialisé? – Vladimir

+0

J'utilise une classe personnalisée. Voir ma modification. –

Questions connexes