NSBundle 不同文件夹中的两张图片同名

Posted

技术标签:

【中文标题】NSBundle 不同文件夹中的两张图片同名【英文标题】:Same name of two images in different folders of NSBundle 【发布时间】:2014-04-26 11:31:02 【问题描述】:

我在NSBundle 的不同文件夹中有两个同名的图像。它显然会发出警告:

警告:输出文件/Users/xxxxxXXXXXXXxxxxxxx.app/image.png的多个构建命令

我知道NSBundle => 在NSBundle 中,所有文件夹都是“组”,而不是实际目录,并且这些组中的文件仍然位于包的根目录。

在我的应用程序中,我需要在不同的“文件夹”中拥有相同名称的图像以简化我的任务。

所以我的问题是:

有什么方法可以将两张图片保存在NSBundle 的不同文件夹中而不发出任何警告?还有怎么获取呢?

如果没有,那么当我将应用程序上传到应用商店时,此警告是否有问题?我的意思是,我的应用会不会被 Apple 拒绝?

【问题讨论】:

先生,请检查:- ***.com/questions/3692352/… @NitinGohel - 谢谢先生,我已经知道了……但是有什么办法可以解决吗?请阅读我的问题。也感谢队友给予你的关注。 :) @NitinGohel - 先生把它作为答案,所以我会接受它:) 看看这个答案Answer link 【参考方案1】:

这是执行此任务的非常好的链接,请检查此 Xcode Groups vs. Folder References 清楚地描述了它

群组

基础项目文件 (project.pbxproj) 的大小和复杂性会显着增加,尤其是在具有多个目标的情况下。每个新目标都必须复制所有引用。您还必须记住为每个文件设置正确的目标成员资格。此外,由于项目文件更大、更复杂,SCM 合并冲突的可能性也更大。

组可能与磁盘上的文件夹层次结构完全不同。您可以在 Finder 中拥有 Xcode 项目中甚至不存在的项目文件夹,反之亦然。由于不匹配,定位文件可能会令人困惑

如果您在 Xcode 之外移动或重命名文件,引用中断并且文件变为红色。文件管理真的很痛苦。

文件夹引用

文件夹引用的好处是:

Xcode 仅存储对文件夹的引用。它的所有文件和子文件夹都会自动添加到项目中。这使项目文件更小更简单,合并冲突的可能性更小。

如果您重命名、删除或移动文件系统中的文件,Xcode 会自动更新文件夹引用以反映更改。文件管理因此变得容易得多。 由于项目中的文件夹层次结构与磁盘上的层次结构相匹配,因此它们不会随着时间的推移而发散并造成混乱。

您不必担心名称冲突,因为目录结构保留在产品包中。两个文件可以同名,只要它们位于不同的目录中即可。

【讨论】:

【参考方案2】:

您有文件夹:图像。通过将其重命名为:images.bundle,将其更改为 bundle。将其拖到您的项目中,然后:

你有:

images.bundle --- folder1 --- image1.png         
              --- folder2 --- image1.png
              --- folder3 --- image1.png

你得到文件夹数组,得到你想要的文件夹后,你可以得到你想要的图像:

NSString *path = [[NSBundle mainBundle] bundlePath];
path = [path stringByAppendingString:@"/images.bundle"];
NSError *error;
NSArray * directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path error:&error];

【讨论】:

以上是关于NSBundle 不同文件夹中的两张图片同名的主要内容,如果未能解决你的问题,请参考以下文章

如何检查具有不同像素化的两张图像的相似性

SQL Server中 两个不同的数据库中的两张表如何关联?

需要使用hibernate dao实现方法保存不同jsp页面的两张表有外键关系

sql server2008,同一数据库里的两张不同的表怎么实现同步?

创建与文件同名但在不同文件夹中的 tar

从Objective C中的NSBundle获取图像路径?