參考http://my.oschina.net/u/554222/blog/173958數組
文件.hspa
#import <Foundation/Foundation.h>.net
#import "AddressCard.h"code
@interface AddressBook : NSMutableArray<NSCoding>對象
@property(retain) NSMutableArray *book;blog
-(void)seek:(AddressCard *)addressCard;排序
-(NSMutableArray *)sort;ip
-(void)display;rem
-(NSComparisonResult)compare:(AddressCard *)card1 card2:(AddressCard *)card2;get
//-(NSComparisonResult)compare:(AddressCard *)card;
文件.m
#import "AddressBook.h"
@implementation AddressBook
-(void)seek:(AddressCard *)addressCard
{
for (NSString *seekName in self.book)
{
if ([addressCard.name isEqualToString:seekName])
{
NSLog(@"%@",addressCard);
break;
}
}
NSLog(@"Have no the person");
}
//簡單排序
//-(NSMutableArray *)sort
//{
// NSArray *sortedarray=[self.book sortedArrayUsingSelector:@selector(compare:)];
// if ([self.book sortedArrayUsingSelector:@selector(compare:)]==nil)
// {
// NSLog(@"操做失敗");
// }
// else
// {
// NSLog(@"操做成功");
// }
//// sortedarray=[NSArray arrayWithObjects:@"abc",@"sfd", nil];
// NSLog(@"%@",sortedarray);
// NSLog(@"sortedarray:%p book:%p",sortedarray,self.book);
//// [self.book removeAllObjects];
//// self.book=[[NSMutableArray alloc] init];
// self.book=[NSMutableArray arrayWithArray:sortedarray];
// return self;
//}
//block語法排序
//-(NSMutableArray *)sort
//{
// NSArray *sortedarray=[self.book sortedArrayUsingComparator:^NSComparisonResult(AddressCard *card1, AddressCard *card2)
// {
// NSComparisonResult result=[card1.name compare:card2.name];
// return result;
// }];
// self.book=[NSMutableArray arrayWithArray:sortedarray];
// return self;
//}
//高級排序,,
-(NSMutableArray *)sort
{
NSSortDescriptor *nameDesc=[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
NSSortDescriptor *emailDesc=[NSSortDescriptor sortDescriptorWithKey:@"email" ascending:YES];
NSSortDescriptor *phoneDesc=[NSSortDescriptor sortDescriptorWithKey:@"phoneNumber" ascending:YES];
NSArray *descArray=[NSArray arrayWithObjects:nameDesc,emailDesc,phoneDesc, nil];
NSArray *sortedArray=[self.book sortedArrayUsingDescriptors:descArray];
self.book=[NSMutableArray arrayWithArray:sortedArray];
return self;
}
-(void)display
{
for (AddressCard *str in self.book)
{
NSLog(@"%@",str);
}
}
-(NSComparisonResult)compare:(AddressCard *)card1 card2:(AddressCard *)card2
{
NSComparisonResult result=[card1.name compare:card2.name];
return result;
}
//-(NSComparisonResult)compare:(AddressCard *)card
//{
// if ([self.book indexOfObject:card]==0)
// {
// return NSOrderedSame;
// }
// else
// {
// NSComparisonResult result=[[[self.book objectAtIndex:([self.book indexOfObject:card]+1)] name] compare:card.name];
// return result;
// }
//}
-(void)encodeWithCoder:(NSCoder *)aCoder
{
[aCoder encodeObject:self.book forKey:@"book"];
}
-(id)initWithCoder:(NSCoder *)aDecoder
{
if (self=[super init])
{
self.book=[aDecoder decodeObjectForKey:@"book"];
}
return self;
}
高級排序使用過程當中注意對象的使用是否正確,應特別注意
NSSortDescriptor *nameDesc=[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
中的Key,假如數組self.book中元素有自定義類,如:若name爲自定類,類中有firstName,則Key應爲@"name.firstName",具體如:
NSSortDescriptor *nameDesc=[NSSortDescriptor sortDescriptorWithKey:@"name.firstName" ascending:YES];