我正在按照列出的here步骤本地化应用。我用大约45个.xib成功实现了这一点,而其中只有4个给了我这个错误:
“Interface Builder无法打开文档”.xib“,因为它不存在。”
当我将它们从原来的位置移开时。我尝试将它们从Project / Classes / Example.xib位置移动到Project / en.lproj / Example.xib上的本地化位置。
为什么不能移动这个.xib文件?
答案 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认为仍然存在的文件并且认为它仍然应该尝试编译,但是当它找不到它们时,它会给出这个错误。