我对iOS开发很新,但绝对不能完全理解Xcode
和其他东西的工作原理。我正在创建一个iOS应用程序,并且一直使用Sqlite
在设备上存储数据。我在项目中添加了一个sqlite3
数据库,但我注意到在模拟器中,数据库在第一次运行应用程序时不存在,因此必须在代码中创建。直到现在还可以。我应该有一个列表,其中包含应用程序附带的日期。是否可以让应用程序在首次运行时使用包含某些数据的数据库?
答案 0 :(得分:1)
那是因为sqlite文件在你的包中。
您需要在applicationDidFinishLaunching之后将其移动到库文件夹(或Documents文件夹)。
结帐NSFileManager了解更多信息......
答案 1 :(得分:1)
// Creates a writable copy of the bundled default database in the application Documents directory.
- (void)createEditableCopyOfDatabaseIfNeeded {
// First, test for existence.
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"bookdb.sql"];
success = [fileManager fileExistsAtPath:writableDBPath];
if (success)
return;
// The writable database does not exist, so copy the default to the appropriate location.
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"bookdb.sql"];
success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
}
这是为了复制sqlite数据库,如果它不存在..
希望这有帮助。
答案 2 :(得分:0)