【发布时间】:2012-08-09 13:18:59
【问题描述】:
我刚开始开发 iPhone。在一个示例中,我必须在选项卡控制器的表格视图中显示存储在 sqlite db 中的一些数据,我必须将 sqlite 文件从应用程序包移动到文档文件夹。
我使用了应用程序模板 - iOS > 应用程序 > iPhone 的基于窗口的应用程序(使用核心数据进行存储)
在 XCode 生成的模板中(base sdk 设置为最新的 iOS = 4.2),有以下代码...
- (NSURL *)applicationDocumentsDirectory {
return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}
在尝试获取文档文件夹的路径时,我使用了上面给出的方法......
NSString *documentDirectory = [self applicationDocumentsDirectory];
这给出了一个警告 - warning: incompatible Objective-C types initializing 'struct NSURL *', expected 'struct NSString *'
所以我把代码改成下面...
// Added the message absoluteString over here
NSString *documentDirectory = [[self applicationDocumentsDirectory] absoluteString];
NSString *writableDBPath = [documentDirectory stringByAppendingPathComponent:@"mydb.sqlite"];
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"mydb.sqlite"];
BOOL success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
if (!success) {
NSLog(@"Failed to create writable database file with message '%@'.", [error localizedDescription]);
}
然后砰!它给出了错误 - 'Failed to create writable database file with message 'The operation couldn’t be completed. No such file or directory'.'
我应该如何找到文档目录的路径,因为 XCode 模板生成的方法 applicationDocumentsDirectory 对我不起作用。
另外,有人可以对上面给出的applicationDocumentsDirectory 方法的目的有所了解。
谢谢
【问题讨论】:
-
我收到错误,因为我没有在 writableDBPath 上添加文件名。这个例子帮助我修复它。谢谢! +1
标签: iphone