我目前在开发中使用NSMutableArrays
来存储从HTTP Servlet提取的一些数据。
一切都很好,因为现在我必须对数组中的内容进行排序。
这就是我要做的:
NSMutableArray *array = [[NSMutableArray arrayWithObjects:nil] retain];
[array addObject:[NSArray arrayWithObjects: "Label 1", 1, nil]];
[array addObject:[NSArray arrayWithObjects: "Label 2", 4, nil]];
[array addObject:[NSArray arrayWithObjects: "Label 3", 2, nil]];
[array addObject:[NSArray arrayWithObjects: "Label 4", 6, nil]];
[array addObject:[NSArray arrayWithObjects: "Label 5", 0, nil]];
第一列包含一个Label,第二列是一个分数,我希望数组以降序排列。
我存储数据的方式好吗?有比在
NSMutableArrays
中使用NSMutableArray
更好的方法吗?我是iPhone开发人员的新手,我已经看过一些有关排序的代码,但对此并不满意。
预先感谢您的回答!
最佳答案
如果您要创建一个自定义对象(或至少使用NSDictionary
)来存储信息,而不是使用数组,则将容易得多。
例如:
//ScoreRecord.h
@interface ScoreRecord : NSObject {
NSString * label;
NSUInteger score;
}
@property (nonatomic, retain) NSString * label;
@property (nonatomic) NSUInteger score;
@end
//ScoreRecord.m
#import "ScoreRecord.h"
@implementation ScoreRecord
@synthesize label, score;
- (void) dealloc {
[label release];
[super dealloc];
}
@end
//elsewhere:
NSMutableArray * scores = [[NSMutableArray alloc] init];
ScoreRecord * first = [[ScoreRecord alloc] init];
[first setLabel:@"Label 1"];
[first setScore:1];
[scores addObject:first];
[first release];
//...etc for the rest of your scores
填充
scores
数组后,您现在可以执行以下操作://the "key" is the *name* of the @property as a string. So you can also sort by @"label" if you'd like
NSSortDescriptor * sortByScore = [NSSortDescriptor sortDescriptorWithKey:@"score" ascending:YES];
[scores sortUsingDescriptors:[NSArray arrayWithObject:sortByScore]];
之后,您的
scores
数组将按得分升序排序。关于objective-c - Objective-C : Sorting NSMutableArray containing NSMutableArrays,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2766994/