为啥这条线不能在真正的 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 调试?

为啥应用内购买方法可以在模拟器上完美运行,但不能在真实设备 iOS 6 上运行?

iOS App 在模拟器上运行而不是在设备上运行?

为啥在安装了 cordova-mfp-push 插件后,我不能在真实的 ios 设备上运行 cordova 应用程序?