gpt4 book ai didi

iphone - NSBundle pathsForResourcesOfType : working unreliably

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:48:57 28 4
gpt4 key购买 nike

我正在开发一个应用程序,我可以在其中将一个包含图像的文件夹拖放到我的 Xcode 项目中。

当应用程序启动时,我收集了应用程序中图像的所有文件名以便稍后延迟加载它们:

-(NSArray *)fetchImagesInFolder:(NSString *)folderName{

NSArray *allImagesArray = [NSArray arrayWithArray:[[NSBundle mainBundle] pathsForResourcesOfType:nil inDirectory:folderName]];

if([allImagesArray count] == 0){
NSLog(@"No images found in %@", folderName);
return nil;
}

return allImagesArray;
}

这是我的问题:这仅适用于 1 次超时 4。4 次中有 3 次,[allImagesArray count] 为 0。

然后我必须从项目中删除该文件夹,再次拖放它,如果我之前选择了“为任何添加的文件夹创建组”,我将选择“为任何添加的文件夹创建文件夹引用”,反之亦然,清理、构建和运行。该解决方案在 4 次中有 3 次有效。

如果我右键单击项目生成的 .app 文件,然后“显示包内容”,图像总是在那里。但是为什么 pathsForResourcesOfType:inDirectory: 如此不可靠?

最佳答案

您是否查看了目标的构建阶段的“复制 bundle 资源”部分,并查看了系统如何将图像移动到 bundle 中?我希望它不会复制文件夹本身,而只是将各种图像移动到一个公共(public)目录中。

如果是这样,假设您有所有“jpg”或所有“png”,然后使用适当的后缀(例如“jpg”)并执行此操作:

[NSBundle mainBundle] pathsForResourcesOfType:@"jpg" inDirectory:nil];

如果实际上您已说服 Xcode 在包中实际创建一个目录,则像现在一样添加名称,但保留类型。

如果你有混合图像类型,那么每次执行一次上述命令,然后将数组组合成一个 super 数组。

编辑:如果您想将图像存储在不同的文件夹中,我相信您需要编写一个“运行脚本”shell 脚本来执行您想要的操作。虽然我自己没有做过这种技术,但我相信这是其他人在处理相同问题时所做的:

  • 不要在目标中包含任何图像(取消选中所有)- 您将自己管理它们
  • 添加一张图片 - 一些 jpeg - 并查看 Copy Bundle Resources 将它移动到哪里。我记得它只是被移动到主包目录但又不确定。
  • 创建一个空的运行脚本,并勾选转储环境的复选框 - 您将在那里看到所有不同的定义,并且可以找到指向正确目录的那个(这样您就可以在脚本中使用它)
  • 使用上面的代码找到指向顶级项目目录的变量,这样您就可以导航到您的图像文件夹
  • 现在编写您的运行脚本,使用变量,找到您项目中的所有图像文件夹,并将它们复制到应用程序包中的适当位置。您希望使用变量,因为模拟器和真实应用的路径不同。

您可以在此处和网络上找到编写“运行脚本”的示例。我永远不记得使用了哪些 Xcode 环境变量,所以总是转储一组然后四处寻找。使用任何一个名称,您都可以用谷歌搜索它并找到提供有关它的更多信息的 Apple 文档。

关于iphone - NSBundle pathsForResourcesOfType : working unreliably,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12368466/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com