【发布时间】:2012-08-15 18:06:45
【问题描述】:
编辑:看起来它现在也不能与模拟器一起使用。
更多信息,似乎如果我安装了一个有效的存档版本,然后安装一个不起作用的版本,就在它上面,一切都很好。但是当我删除存档版本并安装新版本时,一切都停止了。
我刚刚在我的 iPhone 上测试我的应用程序,它运行良好,当我将它存档并在我的手机上安装 ipa 时,数据库停止工作。加载数据库时不会发生错误,就像我之前说的,它只是工作。我没有更改任何代码。它仍然可以在模拟器上运行,所以我知道它与数据库的复制有关。这是相关代码:
dbPath=[NSString stringWithFormat:@"%@/Documents/database.sql", NSHomeDirectory()];
// Get the documents directory
NSFileManager *fmngr = [[NSFileManager alloc] init];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"database.sql" ofType:nil];
NSError *error;
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"didLaunchFirstTime"])
{
[[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"didLaunchFirstTime"];
[fmngr removeItemAtPath:[NSString stringWithFormat:@"%@/Documents/database.sql", NSHomeDirectory()] error:&error];
if(![fmngr copyItemAtPath:filePath toPath:[NSString stringWithFormat:@"%@/Documents/database.sql", NSHomeDirectory()] error:&error])
{
// handle the error
NSLog(@"Error creating the database: %@", [error description]);
}
}
我的查询看起来像这样,因为我使用 FMDB 来查询数据库。它在用户按下搜索按钮时调用的单独方法中。
FMResultSet *s = [db executeQueryWithFormat:@"SELECT Gurmukhi, ShabadID, FirstLetterStr FROM Shabad WHERE FirstLetterStr LIKE %@", searchString];
我还解压缩了 ipa 以检查数据库是否不为空,而事实并非如此。我不知道发生了什么。
【问题讨论】:
-
您是否尝试从设备中删除该应用并重新安装?
-
@SPVarma 是的,甚至重启了我的手机
-
@SPVarma 实际上,有些有趣。这次我从模拟器中删除了应用程序,当它开始构建时,它和我的 iPhone 做同样的事情。新的 ios6 测试版是否对目录进行了任何更改?
-
@Mukhi:你在哪里实现这个代码?我希望它在 - (NSPersistentStoreCoordinator *)persistentStoreCoordinator ?
-
@mvb no.. 它只是在 viewDidLoad 方法中。它以前工作过,有什么具体原因需要在那里吗?
标签: iphone ios sqlite nsfilemanager