1

我有一个NSMUtableArray和一个NSMutableDictionary。我的代码将对象从 a 获取NSArray到 aNSMUtableDictionary中。然后将这些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. 我怎么解决这个问题。

谢谢

4

1 回答 1

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)无需检查降序和相等。只需检查上升。

于 2012-10-24T05:28:16.197 回答