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

时间:2012-01-23 08:16:13

标签: iphone xcode localization xib

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

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

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

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

4 个答案:

答案 0 :(得分:43)

对我而言,它的工作原理如下:

  • 选择项目目标
  • build phases
  • copy bundle resources标签中删除该文件
  • 将其添加到build phases标签

答案 1 :(得分:12)

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

最后我发现ibtool启动了一个恶魔进程ibtoold,它在ibtool完成后不会终止,如果我杀了那个进程,我就不会再出错了。显然,恶魔有一些阻碍ibtool在另一个目录中工作的状态。

我用pkill ibtoold来杀死恶魔。

答案 2 :(得分:5)

我在使用Xcode 5时遇到问题可能是同一个问题。在向/从xib文件生成或写入本地化字符串时,ibtools随机工作。我不得不在一些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.
$

答案 3 :(得分:4)

对我来说,这发生在Git合并之后。项目文件必须已经发生了很大的变化,现在它会产生所有这些错误。那些敏感的项目文件......

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

将它们重新添加到项目中

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

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