2013-12-25 4 views
-1

Я хочу получить значение из NSMutableDictionary.Как получить значение из словаря в iOS?

вот мой словарь:

{ 
    "Balloon" =  { 
     "fields_id" = 1; 
     "fields_list" = "Balloon"; 
     "posm_details" = "<NBPosm_Sub: 0x828d220>"; 
    }; 
    "Booklet" =  { 
     "fields_id" = 2; 
     "fields_list" = "Booklet"; 
     "posm_details" = "<NBPosm_Sub: 0x828d7b0>"; 
    }; 
    "Brochure" =  { 
     "fields_id" = 3; 
     "fields_list" = "Brochure"; 
     "posm_details" = "<NBPosm_Sub: 0x828d890>"; 
    }; 
    "Fact tags - 1" =  { 
     "fields_id" = 4; 
     "fields_list" = "Fact tags - 1"; 
     "posm_details" = "<NBPosm_Sub: 0x828b760>"; 
    }; 
    "Fact tags - 10" =  { 
     "fields_id" = 13; 
     "fields_list" = "Fact tags - 10"; 
     "posm_details" = "<NBPosm_Sub: 0x828ab90>"; 
    }; 
} 

Над NBPosm_Sub это один из моих пользовательского класса, т.е.

NBPosm_Sub.h :- 

#import <Foundation/Foundation.h> 

@interface NBPosm_Sub : NSObject 

@property (nonatomic, retain) NSString *posmId; 
@property (nonatomic, retain) NSString *posmName; 
@property (nonatomic, retain) NSString *posmQuantity; 
@property (nonatomic, retain) NSString *posmRemarks; 
@property (nonatomic, retain) NSString *posmAfterImageId; 
@property (nonatomic, retain) NSString *posmBeforeImageId; 

@property (nonatomic, retain) NSMutableDictionary *dictPosmDetails; 

@end 


NBPosm_Sub.m :- 

#import "NBPosm_Sub.h" 

@implementation NBPosm_Sub 

@synthesize posmId, posmName, posmQuantity, posmRemarks, posmAfterImageId, posmBeforeImageId, dictPosmDetails; 

- (id) initWithCoder: (NSCoder *)coder 
{ 
    self = [[NBPosm_Sub alloc] init]; 
    if (self != nil) 
    { 
     self.posmId = [coder decodeObjectForKey:@"posmId"]; 
     self.posmName = [coder decodeObjectForKey:@"Name"]; 
     self.posmQuantity = [coder decodeObjectForKey:@"Quantity"]; 
     self.posmRemarks = [coder decodeObjectForKey:@"Remarks"]; 

     self.posmAfterImageId = [coder decodeObjectForKey:@"Picture2Id"];//after 
     self.posmBeforeImageId = [coder decodeObjectForKey:@"Picture1Id"];//before 

     self.dictPosmDetails=[coder decodeObjectForKey:@"dictPosmDetails"]; 
    } 
    return self; 
} 

- (void)encodeWithCoder: (NSCoder *)coder 
{ 
    [coder encodeObject:posmId forKey:@"posmId"]; 
    [coder encodeObject:posmName forKey:@"Name"]; 
    [coder encodeObject:posmQuantity forKey:@"Quantity"]; 
    [coder encodeObject:posmRemarks forKey:@"Remarks"]; 

    [coder encodeObject:posmAfterImageId forKey:@"Picture2Id"];//after 
    [coder encodeObject:posmBeforeImageId forKey:@"Picture1Id"];//before 

    [coder encodeObject:dictPosmDetails forKey:@"dictPosmDetails"]; 
} 

@end 

Можете ли вы помочь мне получить ключевые значения из словаря? Благодаря

Как я могу сделать мой словарь вывод должен быть как:

{ 
    { 
     "fields_id" = 1; 
     "fields_list" = "Balloon"; 
     "posm_details" = "<NBPosm_Sub: 0x828d220>"; 
    }; 
    { 
     "fields_id" = 2; 
     "fields_list" = "Booklet"; 
     "posm_details" = "<NBPosm_Sub: 0x828d7b0>"; 
    }; 
    { 
     "fields_id" = 3; 
     "fields_list" = "Brochure"; 
     "posm_details" = "<NBPosm_Sub: 0x828d890>"; 
    }; 
    { 
     "fields_id" = 4; 
     "fields_list" = "Fact tags - 1"; 
     "posm_details" = "<NBPosm_Sub: 0x828b760>"; 
    }; 
    { 
     "fields_id" = 13; 
     "fields_list" = "Fact tags - 10"; 
     "posm_details" = "<NBPosm_Sub: 0x828ab90>"; 
    }; 
} 

Как удалить заголовок из всех областей?

+2

Да, что? .... –

+0

@ H2CO3Sry..i не получил u .. –

+1

Я тоже ... вы ищете 'objectForKey:'? –

ответ

0

Проверьте один раз ниже код ...
На месте Словаре использовать словарь, содержащий данные:

NSString *strid = [[dict objectForKey:@"Fact tags"] objectForKey:@"fields_id"]; 
NSLog(@"str = %@", strid); 

или вы хотите получить список полный словарь использует код, но вам нужно назначить значение строке или где угодно.

NSString *str = [NSString stringWithFormat:@"Fact tags\nfields_id=%@\nfields_list=%@\nposm_details=%@", [[dict objectForKey:@"Fact tags"] objectForKey:@"fields_id"], [[dict objectForKey:@"Fact tags"] objectForKey:@"fields_list"], [[dict objectForKey:@"Fact tags"] objectForKey:@"posm_details"]]; 
NSLog(@"%@", str); 
+0

Спасибо @kamalesh за правильный ответ, но у меня есть одно сомнение, может ли вы помочь мне? Моя проблема в том, что мне нужно изменить словарь nslog. –

+0

означает, что plz дает полный диск, что вы хотите bcz, это «поле комментариев ограничено» –

+0

Проверьте мой обновленный вопрос, мне нужно удалить все заголовочные имена fields_list из скобки. Plz дайте мне некоторое предложение .. –

-2

Попробуйте этот код

   id obj1 = [arr(yourresponce) objectAtIndex:0]; 
      id obj2 = [obj1 valueForKey:@"Balloon"]; 
      for(int i=0; i <[obj2 count]; i++) 
      { 
       NSMutableDictionary *dict = [obj2 objectAtIndex:i]; 
       NSString *str = [dict objectForKey:@"fields_id"]; 
      } 
+0

@ keyurThanks .. что такое arr (yourresponce)? Я получаю ответ в изменчивом дикторе. –

+0

Почему "integerValue"? Я взял поля_ид как NSString .. –

Смежные вопросы