2017-02-16 63 views
3

我試圖加載存儲我喜歡這個創建了一個資產目錄中的資產:不能框架內加載資產

if let asset = NSDataAsset(name: "packages") { 
    print("loaded") 
} else { 
    print("not loaded") 
} 

這工作得很好,如果我是一個應用程序項目裏面,但它如果我在框架項目中不起作用。我能做什麼?

我發現這個thread提到它不可能這樣做。這是我有麻煩的原因嗎?如果是,是否有任何解決方法?

回答

1

我找不到在框架內使用Asset目錄的方法,這似乎是不可能的。 但是我設法使用一個Bundle來處理我的JSON文件。這是我做的。

  1. 創建將包含您的資源
  2. 將您的文件拖放到該組

現在你必須使用一個包來加載文件的新組:

let bundle = Bundle(identifier: <your.bundle.name>) 

您可以通過單擊您的Framework目標來找到您的軟件包名稱,然後選擇您需要的軟件包。在「常規」選項卡中,選擇「包標識符」字段中的內容。

enter image description here

這將允許您訪問您的包的任何文件。

對於每一個文件,加載文件路徑:

let path = bundle.path(forResource: <filenameWitoutExtension>, ofType: <yourFileType>) 

最後,你可以加載文件:

let data = NSData(contentsOfFile: path) 

我不知道這是一個很好的做法或沒有,但至少我可以訪問我的框架資源。希望它會有所幫助。