2016-07-20 29 views
0

Ich habe eine Klasse-Objekt in NSDictionaryWie konvertiert man ein Klassenobjekt in ein NSDictionary?

Ich habe folgende Klasse

@interface FoodMeal : NSObject<NSCoding,NSCopying> 

@property (nonatomic,strong) NSString *mealType; 
@property (nonatomic,strong) NSString *mealName; 
@property (nonatomic,strong) NSArray *mealItems; 
@property (nonatomic,strong) NSDate *mealDate; 

@end 

mealItems enthält FoodItems zu konvertieren, die ein Klassenobjekt ist.

FoodItems hat eine Variable Nährwerte, die ein Klassenobjekt internieren.

Gibt es eine effiziente Möglichkeit, die FoodMeal-Klasse in NSDictionary umzuwandeln.

Vielen Dank im Voraus.

+0

dies sehen, wenn Sie Ideen erhalten http: // Stackoverflow .com/questions/19079862/converting-nsobject-to-nsdictionary –

+0

Ich habe diese Lösung gesehen ... Ich muss manuell alle Inhalte zum Wörterbuch hinzufügen? Gibt es eine andere effiziente Lösung? –

+0

Sie könnten versuchen [alle Eigenschaften Namen] (http://stackoverflow.com/questions/780897/how-do-i-find-all-the-property-keys-of-) a-kvc-compliant-objective-c-object) und dann mit 'valueForKey:' ihren Wert erhalten. – Droppy

Antwort

2

können Sie verwenden jsonmodel

plz siehe Link https://github.com/jsonmodel/jsonmodel

ex:

Download jsonmodel Import in Ihrem Xcode porject

dann

@interface FoodMeal : JSONModel 

@property (nonatomic,strong) NSString *mealType; 
@property (nonatomic,strong) NSString *mealName; 
@property (nonatomic,strong) NSArray *mealItems; 
@property (nonatomic,strong) NSDate *mealDate; 

@end 

Ihre Klasse machen Unterklasse von jsonmodel. jsonmodel super class ist NSObject.

, als wenn Sie möchten, dass Ihre Klasse Objekt Wörterbuch konvertieren dann verwenden, wie diese

FoodMeal *ob = [FoodMeal alloc]init]; 

NSDictionary *dictob = [ob toDictionary]; 

ToDictionary ist Methode in JSONModel, die Sie NSDictionary zurückkehren;

+0

@Droppy verwenden Sie jsonmodel? –

+0

siehe den Link @Droppy ich gegeben. –

+0

Ich möchte sagen, zuerst verwenden Sie es als die Fragen @Droppy setzen. –

1

Ganz einfach schreiben Sie einfach eine Methode in Ihrer FoodMeal Klasse

- (NSDictionary *)dictionaryRepresentation 
{ 
    NSMutableDictionary *mutableDict = [NSMutableDictionary dictionary]; 

    [mutableDict setValue:self.mealType forKey:@"KeyForMealType"]; 
    [mutableDict setValue:self.mealName forKey:@"KeyForMealName"]; 
    [mutableDict setValue:self.mealItems forKey:@"KeyForMealItem"]; 
    [mutableDict setValue:self.mealDate forKey:@"KeyForMealDate"]; 

    return [NSDictionary dictionaryWithDictionary:mutableDict]; 
} 

und danach können Sie diese Methode verwenden, als

FoodMeal *food = [FoodMeal alloc] init]; 
food.mealType = @"ABC"; 
food.mealName = @"DEF" 
food.mealItems = @[@"Item 1", @"Item 2",@"Item 3",@"Item 4"]; 
food.mealDate = [NSDate date]; 

[food dictionaryRepresentation]; 
+1

hmmm bedeutet, ich muss weiterhin erstellen Mutable Dictionary für jedes Objekt ... Ich muss tief tauchen in mealItems Array .. wie Item1 ist wieder eine Klasse sagen Nutrition, Portionen mit 10-12 Eigenschaften ... –

+0

ihre NSDictionary Verantwortung, NSArray zu behandeln. Übrigens, was Sie mit Dictionary of Object tun möchten, kann eine andere Lösung Ihnen helfen –

Verwandte Themen