如何将NSMUtabledictionary添加到NSMUtableArray中

时间:2012-10-24 04:53:09

标签: nsmutablearray ios6 nsmutabledictionary

我有NSMUtableArrayNSMutableDictionary。我的代码将NSArray中的对象转换为NSMUtableDictionary。然后将这些NSMUtableDictionary个对象添加到NSMutableArray

这是我的代码

`

  NSArray *sqlAllarray=[[NSArray alloc]initWithArray:[sqlite executeQuery:@"SELECT * FROM dir_bill"]];

    for (NSMutableDictionary *alldataDict in sqlAllarray ) {

        paydate2=[fmtDate2 dateFromString:[alldataDict valueForKey:@"bill_dateDue"]];

        if ([paydate1 compare:paydate2]==NSOrderedDescending || [paydate2 compare:paydate1]==NSOrderedSame) {


            appDel.untillPaydayArray=[[NSMutableArray alloc]init];//addObject:[alldataDict copy]];
            [appDel.untillPaydayArray addObject:[alldataDict copy]];
        }

    }`

但只有最后NSMUtableDictionary个数据才能进入NSMUtableArray。我该如何解决这个问题。

由于

1 个答案:

答案 0 :(得分:0)

您正在循环的每次迭代期间创建一个新的可变数组。此代码中还有一些其他问题。试试这个:

1. NSArray *sqlAllarray = [sqlite executeQuery:@"SELECT * FROM dir_bill"];

2. appDel.untillPaydayArray = [[NSMutableArray alloc] init];

3. for (NSMutableDictionary *alldataDict in sqlAllarray ) {
4.    paydate2=[fmtDate2 dateFromString:[alldataDict valueForKey:@"bill_dateDue"]];

5.    if ([paydate1 compare:paydate2] == NSOrderedAscending) {
6.        [appDel.untillPaydayArray addObject:[alldataDict copy]];
7.    }
8.}

1)无需额外创建NSArray。

2)你需要在循环之前初始化一次数组。你在循环中有这个,所以每次迭代都会导致数组被重置。

5)无需检查下降和平等。只需检查升序。