
Seit einiger Zeit hatte ich bereits vor, mal ein Programm für den Mac zu schreiben bzw. mir
Xcode,
Cocoa &
Objective-C anzusehen und mir so erstmal eine Basis zu schaffen.
Nachdem ich kürzlich bei Twitter nach guter Literatur zu diesem Thema gefragt habe und
Gernot mir "
Cocoa Programming for Mac OS X" von Aaron Hillegass empfohlen hat, habe ich aus der Not heraus und um die Zeit bis das Buch hier ist einfach mal bei YouTube geguckt und ein paar brauchbare Tutorials gefunden, die mir zu meinem ersten Erfolg verholfen haben. :-)
Ein ganz gutes Beispiel hat z.B.
101Nexes101 (auf Englisch) mit seinem Kontakt-Ersteller hochgeladen. In der dreiteiligen Serie erklärt er, wie man ein kleines Tool unter der Verwendung der API vom Adressbuch baut, mit dem man dann einen einfachen Kontakt in seinem eigenen Adressbuch anlegen kann.
Ich hatte vorher noch nie Objective-C-Code gesehen und muss sagen, dass es bestimmt 'ne Weile braucht, bis ich mich daran gewöhnt habe.
C# sieht ja doch noch mal ein bisschen anders aus. ;-) Die Methode die für das Anlegen verantwortlich ist, sieht hier zum Beispiel so aus:
-(IBAction)addUser:(id)sender
{
NSMutableDictionary *homeAddr, *workAddr;
ABMutableMultiValue *multivalue;
NSString *nameOne, *nameTwo;
nameOne = [firstName stringValue];
nameTwo = [lastName stringValue];
ABAddressBook *ab = [ABAddressBook sharedAddressBook];
ABPerson *person = [[ABPerson alloc] init];
[person setValue:nameOne forProperty:kABFirstNameProperty];
[person setValue:nameTwo forProperty:kABLastNameProperty];
homeAddr = [NSMutableDictionary dictionary];
[homeAddr setObject:@"45 main st" forKey:kABAddressStreetKey];
[homeAddr setObject:@"Seattle" forKey:kABAddressCityKey];
[homeAddr setObject:@"Washington" forKey:kABAddressStateKey];
workAddr = [NSMutableDictionary dictionary];
[workAddr setObject:@"23 claire st" forKey:kABAddressStreetKey];
[workAddr setObject:@"Redmond" forKey:kABAddressCityKey];
[workAddr setObject:@"Washington" forKey:kABAddressStateKey];
multivalue = [[ABMutableMultiValue alloc] init];
[multivalue addValue:homeAddr withLabel:kABAddressHomeLabel];
[multivalue addValue:workAddr withLabel:kABAddressWorkLabel];
[person setValue:multivalue forProperty:kABAddressProperty];
[multivalue release];
if ([ab addRecord:person])
if ([ab save])
[complete setStringValue:@"success!"];
[person release];
}
Wenn ihr das selbst ausprobieren, aber nicht selbst runtertippen wollt, könnt ihr hier mein Projekt-File runterladen:
Create Contact.zip (2,25 mb)
Anmerkung: Im Video spricht er, wenn er vom Interface redet, immer von dem sog. *.nib-File. In meinem Projekt ist es das *.xib-File.