size=13pt]AddressCard.h[/size]
#import <Foundation/Foundation.h>
@interface AddressCard: NSObject
{
NSString *name;
NSString *email;
}
@property (copy, nonatomic) NSString *name, *email;
-(AddressCard *) setName: (NSString *) n andEmail: (NSString *) e;
-(void) print;
@end
AddressCard.m#import "AddressCard.h"
@implementation AddressCard
@synthesize name, email;
-(void) print
{
NSLog (@"====================================");
NSLog (@"| |");
NSLog (@"| %-31s |", [name UTF8String]);
NSLog (@"| %-31s |", [email UTF8String]);
NSLog (@"| |");
NSLog (@"| |");
NSLog (@"| |");
NSLog (@"| O O |");
NSLog (@"====================================");
}
-(AddressCard *) setName: (NSString *) n andEmail: (NSString *) e
{
self.name = n;
self.email = e;
return self;
}
@end
AddressBook.h#import <Foundation/NSArray.h>
#import "AddressCard.h"
@interface AddressBook: NSObject
{
NSString *bookName;
NSMutableArray *book;
}
-(id) initWithName: (NSString *) name;
-(void) addCard: (AddressCard *) theCard;
-(int) entries;
-(void) list;
-(void) dealloc;
-(NSMutableArray *) lookup: (NSString *) theName;
@end
AddressBook.m#import "AddressBook.h"
@implementation AddressBook;
-(id) initWithName: (NSString *) name
{
self = [self init];
if (self) {
bookName = [[ NSString alloc] initWithString: name];
book = [[NSMutableArray alloc] init];
}
return self;
}
-(void) addCard: (AddressCard *) theCard
{
if(![book containsObject: theCard])
[book addObject: 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 (@"==================================================");
}
-(void) dealloc
{
[bookName release];
[book release];
[super dealloc];
}
-(NSMutableArray *) lookup: (NSString *) theName
{
NSMutableArray *result = [NSMutableArray array];
for (AddressCard *nextCard in book)
if ([[nextCard name] rangeOfString: theName options: NSCaseInsensitiveSearch].length)
[result addObject: nextCard];
if([result count])
return result;
return nil;
}
@end
main.m#import <Foundation/Foundation.h>
#import "AddressBook.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString *aName = @"Julia Kochan";
NSString *aEmail = @"jewls337@axlc.com";
NSString *bName = @"Step Teacher";
NSString *bEmail = @"tony.iannino@techfitness.com";
NSString *cName = @"Stephen Kochan";
NSString *cEmail = @"steve@kochan-wood.com";
AddressCard *card1 = [[AddressCard alloc] init];
AddressCard *card2 = [[AddressCard alloc] init];
AddressCard *card3 = [[AddressCard alloc] init];
AddressBook *myBook = [AddressBook alloc];
NSMutableArray *searchResult;
[card1 setName: aName andEmail: aEmail];
[card2 setName: bName andEmail: bEmail];
[card3 setName: cName andEmail: cEmail];
myBook = [myBook initWithName: @"Linda’s Address Book"];
[myBook addCard: card1];
[myBook addCard: card2];
[myBook addCard: card3];
NSLog (@"Lookup: sTEp");
searchResult = [myBook lookup: @"sTEp"];
if(!searchResult)
NSLog(@"No match found!");
else
for(AddressCard *theCard in searchResult)
[theCard print];
NSLog (@"Lookup: Nik");
searchResult = [myBook lookup: @"Nik"];
if(!searchResult)
NSLog(@"No match found!");
else
for(AddressCard *theCard in searchResult)
[theCard print];
[card1 release];
[card2 release];
[card3 release];
[myBook release];
[pool drain];
return 0;
}