the file 'xxxx' couldn't be opened because there is no such file


注:截圖雖然指向UM,但我想該解決方法適用於任何情況


用git管理碰到好惡心的問題,某個同事導入um,我更新後目錄中整個um的文件不存在(但build phases - copy bundle resources存在),add files後,又刪了build phases - copy bundle resources中重疊的文件,結果就出現這個問題。


開始以爲是string缺失了,但是奇怪的是目錄、build - copy bundle resources都是正常的,爲什麼會出現這個問題捏?

結果我刪了文件,或者又刪了resources,然後又添加回來,各種來回刪除添加,都沒辦法,如果你也到了這一步,可以繼續往下看。


google了一些,沒有找到合適的解決,最後看到一個人說可能是絕對路徑問題,要去project.pbxproj把  'xxx.strings'文件的  <Absolute>改爲 <group>,我看了下,但都是<group>呀,頓時以爲和我的問題不是一個問題,後來據此靈機一動,便想到了解決方法。(很遺憾忘記在哪裏看到的,不然引用下鏈接)


一、首先把 'xxx.strings '(也不一定是.strings文件)從工程移掉,然後確保在build phases - copy bundle resources也不存在。


二、到finder找到項目目錄,用Sublime Text類的應用打開xxx.xcodeproj,如圖(其他 - 選擇Sublime Text)



打開後的效果是這樣的:


選中左側的project.pbxproj文件,我們這次解決問題就靠它了。


三、在文本搜索你出現問題的文件名( no such file.),比如我出現問題的是UMSocialLocalizable.strings,那麼搜索UMSocialLocalizable.strings會發現有很多地方存在。

這個時候你應該知道原因了,我明明在工程裏都刪掉'xxxx.strings'了,爲什麼還會存在呢,所以機智的我嘗試把'xxxx.strings'在整個project.pbxproj裏完全清除掉


四、通過逐步搜索,你會發現,project.pbxproj的文本有點類似於json格式,所以我們在刪除對應的'xxxx.strings'的節點的時候,一定要注意,只能刪除對應的節點,一定要注意符號(花括號,逗號)千萬不要多刪漏刪,不然肯定出問題的。大致如下截圖




五、打開項目,重新build,如果成功就沒啥問題了,然後重新把有問題的'xxxx.strings'導入到工程裏,再次build,成功!


希望能給你帶來幫助,生活愉快:)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章