2016-12-22 3 views
0

J'ai une classe JSONModel en Objective-C. J'initialise ceci avec JSON retourné par un serveur.Comment créer une classe JSONModel en Objective-C avec la même variable en deux types?

#import "JSONModel.h" 

@protocol MyJsonMoodelClass 

@end 

@interface MyJsonMoodelClass : JSONModel 

@property (nonatomic, strong) NSNumber <Optional> * idFilm; 

Cette JSON contient une variable appelée idFilm, et est parfois retourné du type NSNumber mais un autre est retourné dans le tableau.

Pour exaple:

idFilm : 5 

ou

idFilm : [2, 5] 

Comment pourrais-je contrôler cela et comment pourrais-je avoir la même variable définie par deux types, NSNumber et NSArray? Est-ce possible de contrôler cela?

+1

Vous pouvez le mettre à un NSObject qui est à la fois superclasse NSNumber et NSArray. Mais ce n'est pas vraiment une bonne idée dans la plupart des situations car vous devez toujours vérifier quel type il est avant de faire quoi que ce soit ('isKindOfClass'), et il ne convertit pas naturellement en JSON, dans votre cas, sans travail supplémentaire. Mieux vaut toujours utiliser un tableau, et si vous obtenez un nombre, mettez ce nombre dans un tableau et utilisez le tableau à la place (c'est-à-dire, un tableau avec un seul élément). –

Répondre

0

si vous remplacez la méthode "set"? quelque chose comme ceci:

- (void)setIdFilm:(id)idFilm 
{ 
    if([idFilm isKindOfClass:NSArray]) 
     ... 
    else 
     ... 
} 

Je ne sais pas si peut fonctionner, mais peut être un point de départ