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

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

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

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

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

所以我的问题是:

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

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

【问题讨论】:

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

标签: ios nsbundle


【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-21
      • 1970-01-01
      • 2013-12-10
      • 1970-01-01
      相关资源
      最近更新 更多