【问题标题】:Interface Builder could not open the document ".xib" because it does not existInterface Builder 无法打开文档“.xib”,因为它不存在
【发布时间】:2012-02-16 15:07:34
【问题描述】:

我正在按照here 列出的步骤对应用程序进行本地化。我已经用大约 45 个 .xib 成功实现了这一点,而其中只有 4 个给了我这个错误:

“Interface Builder 无法打开文档“.xib”,因为它不存在。”

当我将它们从原来的位置移开时。我尝试将它们从 Project/Classes/Example.xib 位置移动到 Project/en.lproj/Example.xib 上的本地化位置。

为什么这个 .xib 文件不能移动?

【问题讨论】:

  • 您是否使用 XCode 移动了它们?或使用查找器?在 XCode 中这样做应该不会产生任何错误。听起来你是用 Finder 做的,要本地化你的 NIB 文件,在项目中选择它,然后在 Utilities 视图 > File Inspector 的 Localizations 部分中选择“+”。
  • 好的!它几乎适用于所有人。但仍有一个不起作用。我不明白为什么。我只需选择 .xib,打开 File Inspector,使用“+”按钮添加英文本地化,然后编译。同样的错误弹出......

标签: iphone xcode localization xib


【解决方案1】:

在两个不同目录中的 .xib 文件上运行 ibtools 时,我遇到了同样的错误。它适用于第一个目录中的文件,但在第二个目录中的文件上失败了。如果我交换了处理目录的顺序,第二个目录仍然失败。

最后,我发现 ibtool 启动了一个恶魔进程 ibtoold,它在 ibtool 完成时不会终止,如果我终止了该进程,我将不再收到错误。显然,这个恶魔有一些状态阻碍 ibtool 在另一个目录中工作。

我用pkill ibtoold杀了恶魔。

【讨论】:

  • killall -9 ibtoold 对我来说效果更好。结帐有用的script 和article。
【解决方案2】:

对我来说是这样的:

  • 选择项目目标
  • 从copy bundle resources 中的build phases 选项卡中删除文件
  • 重新将其添加到build phases 选项卡

【讨论】:

  • 从构建阶段选项卡中删除文件(删除文件或重命名文件后具有旧名称的文件)是解决方案!谢谢!
  • 哇,真是个“修复”:)
  • 确保您的 project.pbxproj 文件不包含对旧文件的引用并且只有一个具有正确路径的有效引用也很重要。
【解决方案3】:

对我来说,这发生在 Git 合并之后。项目文件一定发生了很大的变化,以至于现在它给出了所有这些错误。那些敏感的项目文件……

所以无论如何,我最终所做的只是从项目中删除文件(将它们发送到垃圾箱),然后使用 git checkout other_branch path/to/file 将它们重新添加到项目中

此后,构建项目不再抛出此错误。

  • 如果您只删除引用然后将文件重新添加到项目中(无需将其发送到废纸篓),它似乎也可以正常工作
  • 重要您应该从目标设置的Build Phases - Compile Sources 中删除所有红色文件。这些是 XCode 认为仍然存在并认为仍应尝试编译的文件,但是当它找不到它们时,它会返回此错误。

【讨论】:

    【解决方案4】:

    我在使用 Xcode 5 时遇到了问题,这可能是同样的问题。 ibtools 在向/从 xib 文件生成或写入本地化字符串时随机工作。我不得不在一些 xib 文件上使用 sudo 才能让它工作。 这是一个例子:

    $ibtool --generate-strings-file en.lproj/MyVC.strings en.lproj/MyVC.xib
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"     
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>com.apple.ibtool.errors</key>
    <array>
        <dict>
            <key>description</key>
            <string>Interface Builder could not open the document "MyVC.xib" because it does not exist.</string>
        </dict>
    </array>
    </dict>
    </plist>
    

    使用 sudo 有效,尽管它抱怨“用户域将不稳定”

    $sudo ibtool --generate-strings-file en.lproj/MyVC.strings en.lproj/MyVC.xib
    2013-10-01 10:04:35.943 Interface Builder Cocoa Touch Tool[1717:303] CFPreferences: user       
    home directory at file:///var/root/Library/Application%20Support/iPhone%20Simulator/User/ is unavailable. User domains will be volatile.
    $
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 2013-09-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      相关资源
      最近更新 更多