2009-09-19 8 views
1

Je suis en train de construire un modèle de données de base et l'une de mes classes doit avoir une variable qui peut être implémentée comme typedef. En ce moment je l'implémente comme une variable de chaîne qui prend trois valeurs possibles, mais bien sûr ce n'est pas robuste. Y a-t-il un moyen de l'implémenter dans le modèle de base de données?typedef en tant que type de données de base

Répondre

1

J'ai regardé récemment l'utilisation d'un typedef enum, et je l'ai stocké comme NSNumber dans Core Data. J'ai implémenté ma propre sous-classe de NSManagedObject et créé une propriété pour mon type. Dans les accesseurs je puis converti en provenance et à NSNumber:

- (MyTypedef)type { 
    NSNumber *value = [self primitiveValueForKey:@"type"]; 
    return [value integerValue]; 
} 

- (void)setType:(MyTypedef)aType { 
    NSNumber *value = [NSNumber numberWithInteger:aType]; 
    [self setPrimitiveValue:value forKey:@"type"]; 
} 

En fin de compte, je ne suis pas allé avec cette solution, mais il a bien fonctionné pour moi alors (sur l'iPhone). Je ne sais pas si le code ci-dessus est absolument correct - je l'ai juste tapé dans la fenêtre de ce navigateur.

Il y a probablement plus de travail requis si vous voulez utiliser KVO etc. et vous pouvez vouloir faire une vérification d'erreur dans la méthode d'accesseur pour vérifier si ce que vous obtenez dans NSNumber est réellement valide dans l'énumération.

1

Vous pouvez avoir un attribut entier et un attribut transcient de type indéfini qui est initialisé en fonction de la valeur de l'attribut entier?

Questions connexes