Im Geiste des Teilens werde ich meine eigene Frage beantworten. Unter anderem Berechtigungen Adressbuch Zugriffsberechtigung ist in TCC.db
-Datenbank gespeichert, die in /Library/TCC/
im Ordner iPhone Simulator befindet.
e.g. /Users/useriko/Library/Application Support/iPhone Simulator/7.1-64/Applications/[appGUID]/Library/TCC/TCC.db
Berechtigungen sind in der Tabelle access
in TCC.db Datenbank gespeichert. access
Tabellenschema: 
Die Felder, die wir interessiert sind, sind:
service
- die Erlaubnis Typ
client
- die App-ID
allowed
- die Erlaubnis erteilt?
Um Zugang Reservieren Erlaubnis und entsprechender Datensatz zu gewähren, sollten (falls bereits vorhanden ist oder aktualisiert) in die access
Tabelle eingefügt werden. Nachdem der Datensatz entweder eingefügt oder aktualisiert wurde, sollte die Tabelle so aussehen: 
Ich habe die folgende Methode geschrieben, um die TCC.db-Datenbank zu aktualisieren.
#import <sqlite3.h>
- (void)grantAccessBookAccess {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
// tccDbPath: /Users/useriko/Library/Application Support/iPhone Simulator/7.1-64/Applications/FB8DF5E9-94B8-4CA9-A167-43AFE794B94E/Document
NSString *tccDbPath = nil;
tccDbPath = [[[[paths objectAtIndex:0]
stringByDeletingLastPathComponent] // remove Document
stringByDeletingLastPathComponent] // remove [appGUID]
stringByDeletingLastPathComponent]; // remove Applications
// tccDbPath: /Users/useriko/Library/Application Support/iPhone Simulator/7.1-64/
tccDbPath = [[[tccDbPath stringByAppendingPathComponent:@"Library"]
stringByAppendingPathComponent:@"TCC"]
stringByAppendingPathComponent:@"TCC.db"];
// tccDbPath: /Users/useriko/Library/Application Support/iPhone Simulator/7.1-64/Library/TCC/TCC.db
sqlite3 *database;
if(sqlite3_open([tccDbPath UTF8String], &database) != SQLITE_OK) {
NSLog(@"Error while opening database. %s", sqlite3_errmsg(database));
return;
}
NSString *updateSql = @"INSERT OR REPLACE INTO access (service, client, client_type, allowed, prompt_count) VALUES (\"kTCCServiceAddressBook\",\"com.your.app.id\",0,1,1);";
int rc;
char* errmsg;
const char *sql = [updateSql UTF8String];
rc = sqlite3_exec(database, sql, NULL, NULL, &errmsg);
if (rc != SQLITE_OK) {
NSLog(@"Error updating access table. %s", errmsg);
sqlite3_free(errmsg);
}
sqlite3_close(database);
}
Aufgrund der offensichtlichen Gründen sollte das Ziel mit libsqlite3.dylib verknüpft werden.
NICHT vergessen, die App-ID zu ändern (com.your.app.id) in den updateSql
auf Ihre App-ID.
iOS 8-Version dieser Frage: http://stackoverflow.com/q/30106320/476716 – OrangeDog