我有NSMUtableArray
和NSMutableDictionary
。我的代码将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
。我该如何解决这个问题。
由于
答案 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)无需检查下降和平等。只需检查升序。