Xcode找不到我的数据库的路径
我现在搜索了几个小时,但找不到使用xcode for iOS应用程序创建的数据库的路径。数据库存在,因为它正在将数据加载到我的应用程序中,但我找不到数据库的路径。im使用xcode 4.5和ios模拟器6.0 我在Xcode/contents/下找到了一些文件夹,我在那里搜索了我的数据库,但没有成功^^ 那么它现在存储在哪里呢Xcode找不到我的数据库的路径,xcode,Xcode,我现在搜索了几个小时,但找不到使用xcode for iOS应用程序创建的数据库的路径。数据库存在,因为它正在将数据加载到我的应用程序中,但我找不到数据库的路径。im使用xcode 4.5和ios模拟器6.0 我在Xcode/contents/下找到了一些文件夹,我在那里搜索了我的数据库,但没有成功^^ 那么它现在存储在哪里呢 - (void)createOrOpenDB { NSArray *path = NSSearchPathForDirectoriesInDomains(NSDo
- (void)createOrOpenDB {
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docPath = [path objectAtIndex:0];
dbPathString = [docPath stringByAppendingPathComponent:@"WorkoutPlans.db"];
char *error;
NSFileManager *fileManager = [NSFileManager defaultManager];
//[fileManager removeItemAtPath:dbPathString error:nil];
if(![fileManager fileExistsAtPath:dbPathString]) {
const char *dbPath = [dbPathString UTF8String];
if (sqlite3_open(dbPath, &workoutPlansDB) == SQLITE_OK) {
const char *sql_cr_wp = "CREATE TABLE IF NOT EXISTS WORKOUTPLANS (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , NAME TEXT NOT NULL UNIQUE , DESCRIPTION TEXT NOT NULL UNIQUE)";
const char *sql_cr_en = "CREATE TABLE IF NOT EXISTS ENTITY (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , NAME TEXT NOT NULL UNIQUE , DESCRIPTION TEXT NOT NULL UNIQUE )";
const char *sql_cr_ex = "CREATE TABLE IF NOT EXISTS EXERCISE (ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL UNIQUE , NAME TEXT NOT NULL UNIQUE , DESCRIPTION TEXT NOT NULL UNIQUE , REPS TEXT NOT NULL , WEIGHT TEXT NOT NULL)";
const char *sql_cr_plen = "CREATE TABLE IF NOT EXISTS WPEN (PLANID, ENID, FOREIGN KEY(PLANID) REFERENCES WORKOUTPLANS(ID) ON DELETE CASCADE, FOREIGN KEY(ENID) REFERENCES ENTITY(ID) ON DELETE CASCADE)";
const char *sql_cr_enex = "CREATE TABLE IF NOT EXISTS ENEX (ENTITYID, EXERCISEID, FOREIGN KEY(ENTITYID) REFERENCES ENTITY(ID) ON DELETE CASCADE, FOREIGN KEY(EXERCISEID) REFERENCES EXERCISE(ID) ON DELETE CASCADE)";
sqlite3_exec(workoutPlansDB, sql_cr_wp, NULL, NULL, &error);
sqlite3_exec(workoutPlansDB, sql_cr_ex, NULL, NULL, &error);
sqlite3_exec(workoutPlansDB, sql_cr_en, NULL, NULL, &error);
sqlite3_exec(workoutPlansDB, sql_cr_plen, NULL, NULL, &error);
sqlite3_exec(workoutPlansDB, sql_cr_enex, NULL, NULL, &error);
sqlite3_close(workoutPlansDB);
}
}
}
您的数据库将存储在以下路径中 /用户/SystemName/Library/Application\Support/iPhone\Simulator/6.1/Applications/Application UniqueName/Documents\databasename Xcode与iPhone模拟器一起为应用程序的每个版本创建一个新的应用程序文件夹,并将旧文档文件夹及其内容移到新的应用程序文件夹中。由您检查documents文件夹的内容,并决定包中的文件是否比documents文件夹中的文件更适合使用。你应该明智地做出这个决定,而不是轻率地做出决定 这是正确的行为。软件用户可能对数据库进行了一些重大更改和修改。如果在升级一个小错误修复甚至功能增强时,他们的数据库更改、高分、修改过的图像或应用程序保存的任何内容突然被通用版本所取代,他们可能不会喜欢 您应该做的是将新数据库中的数据与用户拥有的数据进行比较,对于SQLite,您应该将用户的条目导入或复制到新数据库中,然后您可以将新数据库移到documents文件夹中,删除用户的,但将其替换为包含用户数据和新数据的 简而言之:确保不要用捆绑包中的新数据库替换现有数据库,因为这会破坏用户的更改