1

私はとを持っていNSMUtableArrayますNSMutableDictionary。私のコードはオブジェクトをからに取得NSArrayしますNSMUtableDictionaryNSMUtableDictionary次に、それらのオブジェクトをに追加します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)ループの前に、配列を1回初期化する必要があります。これはループ内にあったため、反復するたびに配列がリセットされました。

5)降順で等しいかどうかをチェックする必要はありません。昇順を確認してください。

于 2012-10-24T05:28:16.197 に答える