【问题标题】:Adding folder to iPad bundle works on simulator, not on device将文件夹添加到 iPad 捆绑包适用于模拟器,而不适用于设备
【发布时间】:2011-09-15 12:58:10
【问题描述】:

我的应用有两个目标。
每个都有自己的文件 Info.plist 和包含的自定义文件夹(作为参考,而不是作为组)。
当我在模拟器上运行我的目标时,该文件夹已正确插入到包中,并且可以毫无问题地读取其中的文件。
这是读取文件夹路径的代码:

NSBundle* mainBundle;
NSString *fileFolder;
mainBundle = [NSBundle mainBundle];
NSLog(@"Bundle path: %@", [mainBundle bundlePath]);
NSLog(@"Folder name: %@", [mainBundle objectForInfoDictionaryKey:@"CustomFolder"]);
NSString *folder = [mainBundle objectForInfoDictionaryKey:@"CustomFolder"];
fileFolder = [[[NSBundle mainBundle] pathForResource:folder ofType:nil] retain];
NSLog(@"Folder: %@", fileFolder);

如果我尝试在设备上调试应用程序,捆绑路径和文件夹名称正确,但文件夹字符串为空。
我检查了我的应用产品内部,并且存在正确的文件夹,其中包含所有文件。
所以有什么问题?是读取权限问题吗?

更新 在 iPad 模拟器中运行的结果路径是这样的

/*/Library/Application Support/iPhone Simulator/4.3.2/Applications/8337B9E5-1BFE-4A17-969E-E3E6E43193D6/MyApp.app/CustomFolder/

更新 2 问题是我添加了带有“为任何添加的文件夹创建文件夹引用”的文件夹。
我用 stringByAppendingPathComponent 替换了 pathForResource,但是 subpathsOfDirectoryAtPath 的问题现在仍然存在。

【问题讨论】:

  • 是区分大小写的问题吗?在 Mac(包括 iOS 模拟器)上,文件系统不区分大小写,但在设备上。
  • 文件夹在名称和代码引用中的大小写相同。

标签: ios ipad directory bundle target


【解决方案1】:

您必须确保使用 iPad 内存中的正确位置。在模拟器上保存东西的位置没有限制。此代码有效

+(NSString*) pathToDocumentsFolder
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return documentsDirectory;  
}
+(NSString*) pathToFileInDocumentsFolder:(NSString*)filename
{
NSString *pathToDoc = [NSBundle pathToDocumentsFolder];
return [pathToDoc stringByAppendingPathComponent:filename];
}

【讨论】:

  • 我的文件夹不在文档文件夹中,在捆绑包中。查看我的帖子更新到完整路径。
  • 你的 iPhone 上的 iOS 版本是什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 2012-11-01
  • 2011-03-08
相关资源
最近更新 更多