2013-07-27 2 views
0

привет я должен добавить некоторые данные Plist в следующем формате ** как в изображении ниже ** actual i wantзначения Plist заменяются вместо добавленной

но фактическая РМКО получаю как здесь

currently wat iam getting помогите пожалуйста мой код для этого ..

-(void)updatePlist 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *pathOfPricePlist= [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Price.plist"]; 
    NSMutableDictionary *mutableDictionary=[[NSMutableDictionary alloc]init]; 
    NSMutableArray *finalList=[[NSMutableArray alloc]init]; 
    for(int i=0;i<[sharedManager.bookidList count];i++) { 

     [mutableDictionary setValue:[sharedManager.sharedProductPrice objectAtIndex:i] forKey:@"price"]; 
     [mutableDictionary setValue:[sharedManager.bookidList objectAtIndex:i] forKey:@"booknumber"]; 

     NSLog(@"%@",mutableDictionary); 
     [finalList addObject:mutableDictionary]; 
     NSLog(@"%@",finalList); 
    } 

    [finalList writeToFile:pathOfPricePlist atomically:YES]; 

} 

ответ

1

Вам необходимо создать новый mutableDictionary на каждом этапе цикла for. Например:

-(void)updatePlist 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *pathOfPricePlist= [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Price.plist"]; 

    NSMutableArray *finalList=[[NSMutableArray alloc]init]; 
    for(int i=0;i<[sharedManager.bookidList count];i++) { 

     NSMutableDictionary *mutableDictionary=[[NSMutableDictionary alloc]init]; 


     [mutableDictionary setValue:[sharedManager.sharedProductPrice objectAtIndex:i] forKey:@"price"]; 
     [mutableDictionary setValue:[sharedManager.bookidList objectAtIndex:i] forKey:@"booknumber"]; 

     NSLog(@"%@",mutableDictionary); 
     [finalList addObject:mutableDictionary]; 
     NSLog(@"%@",finalList); 
    } 

    [finalList writeToFile:pathOfPricePlist atomically:YES]; 

} 

В противном случае вы просто добавляете один и тот же словарь снова и снова в этом массиве.

+0

: супер босс. Вы человек. Не сомневайтесь, если мы создадим словарь внутри цикла, он будет использовать больше памяти? – Navi

+0

Да, так будет, но я бы не стал слишком беспокоиться об этом, если у вас нет действительно больших файлов plist. Когда вы напишете plist в файл, вся выделенная вами память будет восстановлена. Я бы предложил использовать 'NSDictionary' вместо' NSMutableDictionary' и использовать '+ (id) dictionaryWithObjects: (NSArray *) объекты forKeys: (NSArray *) keys' для его создания одним выстрелом. Это связано с тем, что вы уже знаете количество ключей и значения в нем. –

+0

У меня есть plist с 150 записями – Navi

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