App module 名稱造成的 ignoring import 問題
當我們開發 iOS App 時,我們生成的 App 或是使用的 framework 都是 module,如果這些 module 不小心撞名的話將產生可怕的問題,比方以下 App module 名字和 framework 同名的例子。
1 建立新專案 CoreData。
App 的 module 名預設將等於專案名字,因此 App 的 module 名也是 CoreData。
2 import CoreData framework 造成問題。
CoreData 是 iOK SDK 內建的 framework,我們想將它 import,使用 CoreData 的相關功能。但由於 App 的 module 名也叫 CoreData,所以 Xcode 顯示警告訊息 ignoring import,不讓我們 import CoreData,造成我們無法使用 CoreData framework 的相關功能。
由於 import CoreData 失效,所以也無法使用 CoreData 裡定義的型別 NSPersistentContainer。
因此,在建立專案時,請避免專案名和 framework 的名字一樣。如果不幸專案名和 framework 名字一樣,也有另一種補救方法,手動修改 App 的 module 名字。
1 切換到 App 的 Build Settings 分頁,找尋 Product Module Name。
2 修改 Product Module Name。
比方將它改成 CoreDataApp,這樣就不會和 framework CoreData 撞名了。