Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
#import "AddressBook.h"
@implementation AddressBook
@synthesize book, bookName;
// set up the AddressBook's name and an empty book
-(id) initWithName: (NSString *) name{
self = [super init];
if (self) {
bookName = [[NSString alloc] initWithString: name];
book = [[NSMutableArray alloc] init];
}
return self;
}
-(void) sort
{
[book sortUsingSelector: @selector(compareNames:)];
}
-(void) addCard: (AddressCard *) theCard
{
[book addObject: theCard];
}
-(void) removeCard: (AddressCard *) theCard
{
[book removeObjectIdenticalTo: theCard];
}
-(int) entries
{
return [book count];
}
-(void) list
{
NSLog (@"======== Contents of: %@ =========", bookName);
for ( AddressCard *theCard in book )
NSLog (@"%-20s %-32s", [theCard.name UTF8String],
[theCard.email UTF8String]);
NSLog (@"==================================================");
}
// lookup address card by name — assumes an exact match
-(AddressCard *) lookup: (NSString *) theName
{
for ( AddressCard *nextCard in book )
if ( [[nextCard name] caseInsensitiveCompare: theName] == NSOrderedSame )
return nextCard;
return nil;
}
-(void) dealloc
{
[bookName release];
[book release];
[super dealloc];
}
-(void) encodeWithCoder: (NSCoder *) encoder
{
[encoder encodeObject:bookName forKey: @"AddressBookBookName"];
[encoder encodeObject:book forKey: @"AddressBookBook"];
}
-(id) initWithCoder: (NSCoder *) decoder
{
bookName = [[decoder decodeObjectForKey: @"AddressBookBookName"] retain];
book = [[decoder decodeObjectForKey: @"AddressBookBook"] retain];
return self;
}
// Method for NSCopying protocol
-(id) copyWithZone: (NSZone *) zone
{
AddressBook *newBook = [[self class] allocWithZone: zone];
[newBook initWithName: bookName];
[newBook setBook: book];
return newBook;
}
@end