【发布时间】:2014-09-04 18:39:54
【问题描述】:
好的,我将我的问题分解为一个更简单、更具体的问题来理解。所以下面的代码有一个数字序列:1,0,1,0 但是当我在它排序后打印出来时,它打印出:0,0,0,0。我在这里做错了什么?
SortedDetailFields * sorty = [[SortedDetailFields alloc]init];
NSMutableArray * fieldArray = [[NSMutableArray alloc]init];
BOOL fieldone, fieldtwo,fieldthree,fieldfour;
NSSortDescriptor *fff = [NSSortDescriptor sortDescriptorWithKey:@"numbersToSort"
ascending:NO];
fieldone = true;
fieldtwo = false;
fieldthree = true;
fieldfour = false;
if (fieldone) {
sorty.numbersToSort = @"1";
[fieldArray addObject:sorty];
}else{
sorty.numbersToSort = @"0";
[fieldArray addObject:sorty];
}
if (fieldtwo) {
sorty.numbersToSort = @"1";
[fieldArray addObject:sorty];
}else{
sorty.numbersToSort = @"0";
[fieldArray addObject:sorty];
}
if (fieldthree) {
sorty.numbersToSort = @"1";
[fieldArray addObject:sorty];
}else{
sorty.numbersToSort = @"0";
[fieldArray addObject:sorty];
}
if (fieldfour) {
sorty.numbersToSort = @"1";
[fieldArray addObject:sorty];
}else{
sorty.numbersToSort = @"0";
[fieldArray addObject:sorty];
}
NSLog(@"By numbers : %@",[fieldArray sortedArrayUsingDescriptors:@[fff]]);
for (SortedDetailFields * detain in fieldArray) {
NSLog(@"Number %@",detain.numbersToSort);
}
所以我的问题是如何对对象进行排序和打印,以使它们与序列 1、1、0、0 匹配? 任何帮助是极大的赞赏。谢谢!
【问题讨论】:
-
您正在修改同一个对象
sorty并添加到数组中,最后设置的值为零,因为 fieldFour 为 false。尝试打印您的数组,您将多次添加相同的对象 -
这里有一点教训:当您说数据“排序不正确”时,您完全错过了数据一开始就错误的可能性更大的情况。调试时,草率下结论通常是不明智的 - 始终验证过程的每个步骤。
-
Hot licks 我完全是为了提高我的问题的准确性,但我更关心从我的错误中吸取教训。
-
我的意思是您错误地假设症状 == 原因。你需要从那个的错误中吸取教训。,
-
我支持你。
标签: ios objective-c arrays sorting