Skip to content

Instantly share code, notes, and snippets.

@flyfire
Created August 2, 2012 16:16
Show Gist options
  • Save flyfire/3238320 to your computer and use it in GitHub Desktop.
Save flyfire/3238320 to your computer and use it in GitHub Desktop.
Objective-C:AddressBook
#import <Foundation/Foundation.h>
@interface AddressCard:NSObject{
NSString *name;
NSString *email;
}
-(void) setName:(NSString *) theName andEmail:(NSString*) theEmail;
-(void) setName:(NSString *) theName;
-(void) setEmail:(NSString *) theEmail;
-(NSString*) name;
-(NSString*) email;
-(BOOL) isEqual:(AddressCard *) theCard;
-(void) print;
@end
@implementation AddressCard
-(void) setName:(NSString *) theName andEmail:(NSString*) theEmail{
name = theName;
email = theEmail;
}
-(void) setName:(NSString*) theName{
name = theName;
}
-(void) setEmail:(NSString*) theEmail{
email= theEmail;
}
-(NSString*) name{
return name;
}
-(NSString*) email{
return email;
}
-(BOOL) isEqual:(AddressCard *) theCard{
if ([name isEqualToString: [theCard name]] == YES && [email isEqualToString:[theCard email]] == YES)
{
return YES;
}else{
return NO;
}
}
-(void) print{
NSLog(@"===================");
NSLog(@"| |");
NSLog(@"| %-31s |",[name UTF8String]);
NSLog(@"| %-31s |",[email UTF8String]);
NSLog(@"| |");
NSLog(@"===================");
}
@end
@interface AddressBook:NSObject{
NSString *bookName;
NSMutableArray *book;
}
-(id) initWithName:(NSString *) name;
-(AddressCard *) lookUp:(NSString *) theName;
-(void) addCard:(AddressCard *) theCard;
-(void) removeCard:(AddressCard *) theCard;
// -(void) sort;
-(int) entries;
-(void) list;
-(void) dealloc;
@end
@implementation AddressBook
-(id) initWithName:(NSString *) name{
self = [super init];
if (self)
{
bookName = [[NSString alloc] initWithString:name];
book = [[NSMutableArray alloc] init];
}
return self;
}
-(AddressCard *) lookUp:(NSString *) theName{
int i,cnt=[book count];
for (i = 0; i < cnt; ++i)
{
AddressCard *card = (AddressCard*) [book objectAtIndex:i];
if ([[card name] caseInsensitiveCompare:theName] == NSOrderedSame)
{
return card;
}
}
return nil;
}
-(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]);
// }
int i,cnt = [book count];
for (i = 0; i < cnt; ++i)
{
AddressCard *card = (AddressCard*)[book objectAtIndex:i];
NSLog(@"%-20s %-32s",[[card name] UTF8String],[[card email] UTF8String]);
}
NSLog(@"======================");
}
-(void) dealloc{
[bookName release];
[book release];
[super dealloc];
}
@end
int main(int argc, char const *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *aName = @"Julia";
NSString *aEmail = @"julia@axlc.com";
NSString *bName = @"Tony";
NSString *bEmail = @"tony@techfitness.com";
NSString *cName = @"Stephen";
NSString *cEmail = @"steve@kochan-wood.com";
NSString *dName = @"Jamie";
NSString *dEmail = @"jbaker@kochan-wood.com";
AddressCard *card1 = [[AddressCard alloc] init];
AddressCard *card2 = [[AddressCard alloc] init];
AddressCard *card3 = [[AddressCard alloc] init];
AddressCard *card4 = [[AddressCard alloc] init];
// AddressBook *myBook = [AddressBook alloc];
// AddressCard *myCard;
[card1 setName:aName andEmail:aEmail];
[card2 setName:bName andEmail:bEmail];
[card3 setName:cName andEmail:cEmail];
[card4 setName:dName andEmail:dEmail];
AddressBook *myBook = [[AddressBook alloc] initWithName:@"Linda's Address Book"];
NSLog(@"Entries in address book after creation:%i",[myBook entries]);
[myBook addCard:card1];
[myBook addCard:card2];
[myBook addCard:card3];
[myBook addCard:card4];
NSLog(@"Entries in address book after adding cards:%i",[myBook entries]);
[myBook list];
NSLog(@"LookUp:Stephen");
AddressCard *searchCard = [myBook lookUp:@"Stephen"];
if (searchCard != nil)
{
[searchCard print];
}else{
NSLog(@"Stephen not found!");
}
[myBook removeCard:searchCard];
NSLog(@"Remove Stephen...");
[myBook list];
[card1 release];
[card2 release];
[card3 release];
[card4 release];
[myBook release];
[pool drain];
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment