Created
August 2, 2012 16:16
-
-
Save flyfire/3238320 to your computer and use it in GitHub Desktop.
Objective-C:AddressBook
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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 = @"[email protected]"; | |
NSString *bName = @"Tony"; | |
NSString *bEmail = @"[email protected]"; | |
NSString *cName = @"Stephen"; | |
NSString *cEmail = @"[email protected]"; | |
NSString *dName = @"Jamie"; | |
NSString *dEmail = @"[email protected]"; | |
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