2013-02-08 51 views
1

我有一个应用程序,我试图创建一个nsmutablearray的dictionaries.all工作正常,但问题是最后一个元素是添加在coredata数组的计数次数。这就是我如何做它'将coredata中的元素添加到字典中,然后添加到nsmutablearray中?

rateValues=[[NSMutableArray alloc]init]; 
    rateValues1=[[NSMutableDictionary alloc]init]; 
    if(messagesArray!=nil) 
    { 
     for (Messagestable *rating in messagesArray) 
     { 
         //[rateValues addObject:rating.message]; 

      [rateValues1 setObject:rating.fromid forKey:@"fromid"]; 
       [rateValues1 setObject:rating.toid forKey:@"toid"]; 
      [rateValues1 setObject:rating.sendingtime forKey:@"sendingtime"]; 
      [rateValues1 setObject:rating.message forKey:@"message"]; 
      [rateValues1 setObject:rating.fromname forKey:@"fromname"]; 

      [rateValues addObject:rateValues1]; 

     } 



    } 
    else{ 
     //NSLog(@"array empty"); 
     return; 
    } 

    NSLog(@"%@",rateValues); 

`我的数组只包含最后一个元素4次。它是coredata中数据的计数。有人能帮我吗?

+1

您将不得不在循环体中分配'rateValues1' .... !! – TheTiger 2013-02-08 13:21:59

+0

感谢亲爱的朋友的注意.. – hacker 2013-02-08 13:43:10

回答

2

您需要在每次迭代时创建一个新字典;你目前正在做的是覆盖你的单个词典并重新添加到数组中。

rateValues=[[NSMutableArray alloc]init]; 
if(messagesArray!=nil) 
{ 
    for (Messagestable *rating in messagesArray) 
    { 
     NSMutableDictionary *dict = [[NSMutableDictionary alloc]init]; 
     [rateValues1 setObject:rating.fromid forKey:@"fromid"]; 
     [rateValues1 setObject:rating.toid forKey:@"toid"]; 
     [rateValues1 setObject:rating.sendingtime forKey:@"sendingtime"]; 
     [rateValues1 setObject:rating.message forKey:@"message"]; 
     [rateValues1 setObject:rating.fromname forKey:@"fromname"]; 

     [rateValues addObject:dict]; 
    } 
} 
else{ 
    //NSLog(@"array empty"); 
    return; 
} 

NSLog(@"%@",rateValues); 
+0

当然,设置对象时'rateValues1'现在应该是'dict',但这是正确的答案。 – Alladinian 2013-02-08 13:22:44