iphone - NSBundle 路径ForResourcesOfType : working unreliably
<p><p>我正在开发一个应用程序,我将一个包含图像的文件夹拖放到我的 Xcode 项目中。 </p>
<p>当应用启动时,我会收集应用中所有图像的文件名,以便稍后延迟加载:</p>
<pre><code>-(NSArray *)fetchImagesInFolder:(NSString *)folderName{
NSArray *allImagesArray = pathsForResourcesOfType:nil inDirectory:folderName]];
if( == 0){
NSLog(@"No images found in %@", folderName);
return nil;
}
return allImagesArray;
}
</code></pre>
<p>这是我的问题:这只适用于 1 次 4 次。3 次 4 次,<code></code> 为 0。</p>
<p>然后我必须从项目中删除文件夹,再次拖放它,如果我之前选择了“为任何添加的文件夹创建组”,我将选择“为任何添加的文件夹创建文件夹引用”,反之亦然,清理、构建和运行。该解决方案在 4 次中有 3 次有效。</p>
<p>如果我右键单击项目生成的 .app 文件,然后单击“显示包内容”,则图像始终存在。但是为什么 <code>pathsForResourcesOfType:inDirectory:</code> 这么不可靠呢?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>您是否查看了目标的构建阶段“复制捆绑资源”部分,并了解系统如何将图像移动到捆绑中?我希望它不会复制文件夹本身,而只是将各种图像移动到一个公共(public)目录中。 </p>
<p>如果是这样,假设你有所有'jpg'或所有'png',然后使用适当的后缀(比如'jpg')并这样做:</p>
<pre><code> pathsForResourcesOfType:@"jpg" inDirectory:nil];
</code></pre>
<p>如果事实上您已经说服 Xcode 在包中实际创建一个目录,那么像现在一样添加名称,但不考虑类型。</p>
<p>如果你有混合图像类型,那么每次执行上述命令一次,然后将数组组合成一个 super 数组。</p>
<p>编辑:如果您想将图像存储在各种文件夹中,我相信您需要编写一个“运行脚本”shell 脚本来执行您想要的操作。虽然我自己还没有完成这项技术,但我相信其他人正在解决同样的问题:</p>
<ul>
<li>不要在目标中包含任何图像(取消选中全部) - 您将自己管理它们</li>
<li>添加一张图片 - 一些 jpeg - 并查看 Copy Bundle Resources 将其移动到何处。我记得它只是被移动到主包目录但又不确定。 </li>
<li>创建一个空的运行脚本,并选中该框以转储环境 - 您将在那里看到所有各种定义,并可以找到指向正确目录的定义(以便您可以在脚本中使用它)</li >
<li>使用上面的方法找到指向顶级项目目录的变量,这样您就可以导航到您的图像文件夹</li>
<li>现在使用变量编写运行脚本,找到项目中的所有图像文件夹,然后将它们复制到应用程序包中的适当位置。您希望使用变量,因为模拟器和真实应用的路径不同。</li>
</ul>
<p>您会在此处和网络上找到编写“运行脚本”的示例。我永远不记得要使用哪些 Xcode 环境变量,所以总是只转储一个集合然后四处寻找。使用任何一个名称,您都可以 google 并找到提供更多信息的 Apple 文档。</p></p>
<p style="font-size: 20px;">关于iphone - NSBundle 路径ForResourcesOfType : working unreliably,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/12368466/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/12368466/
</a>
</p>
页:
[1]