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 撞名了。

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com