为啥这条线不能在真正的 iOS 设备上工作?
Posted
技术标签:
【中文标题】为啥这条线不能在真正的 iOS 设备上工作?【英文标题】:Why this line isn't going to work on real iOS device?为什么这条线不能在真正的 iOS 设备上工作? 【发布时间】:2011-01-31 03:07:09 【问题描述】:在ios开发中使用Core Data框架,为什么这行在真机上不起作用:
NSURL *storeUrl = [NSURL fileURLWithPath:
[[self applicationDocumentsDirectory]
stringByAppendingPathComponent: @”MyDB.sqlite”]];
这不是说数据库文件在 UUID/Documents 目录下吗?或者这意味着它在 UUDI/MyApp.app/Documents 下?
【问题讨论】:
【参考方案1】:applicationDocumentsDirectory
应该指向GUID/YourApp/Documents
这是获取 Documents 目录的正确用法
+(NSString *)applicationDocumentsDirectory
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
applicationDocumentsDirectory
代码是什么?假设您从 Apple 或其他可靠来源的示例中使用它,这应该指向您的应用程序 Documents 文件夹。
【讨论】:
@WrightsCS 那么方法名称有点误导吧?我的意思是它命名为 applicationDocumentsDirectory。 您的 MyDB.sqlite 应该位于 Documents 目录的根目录,这样您的代码才能正常工作。 @4bu3li 它有什么误导性?没有应用程序曾经在 .app 包中包含 Documents 目录。这是没有意义的。该方法之所以这样命名,是因为它返回与应用程序关联的 Documents 目录,而不是嵌入其中的目录。 @WrightsCS 其实我在“Head First iPhone Development”一书中读到了关于这个的讨论。 @WrightsCS 基于 Xcode 上的模板创建项目时,会生成此方法: - (NSURL *)applicationDocumentsDirectory return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];这段代码会在真实设备上正确运行吗?以上是关于为啥这条线不能在真正的 iOS 设备上工作?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 tailwind css 在 iPhone ios 设备上不起作用?
为啥推送通知不能在 iOS 中使用 Firebase 从设备到设备?
为啥我不能在 ios 设备上关闭并重新打开 react-native 调试?