2017-02-16 66 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) 

我不知道这是一个很好的做法或没有,但至少我可以访问我的框架资源。希望它会有所帮助。