我正在尝试加载存储在我创建的资产目录中的资产,如下所示:
if let asset = NSDataAsset(name: "packages") {
print("loaded")
} else {
print("not loaded")
}
如果我在应用程序项目中,这可以正常工作,但如果我在框架项目中,它就不起作用。我该怎么办?
我发现这个thread提到它是不可能的。这是我遇到麻烦的原因吗?如果是,是否有任何解决方法?
答案 0 :(得分:1)
我找不到在框架内使用Asset目录的方法,似乎不可能。 但是我设法使用Bundle处理我的JSON文件。这就是我所做的。
现在您必须使用Bundle来加载文件:
let bundle = Bundle(identifier: <your.bundle.name>)
您可以通过单击Framework目标找到您的软件包名称,然后选择您需要的软件包。在“常规”选项卡中,选择“包标识符”字段中的内容。
这将允许您访问捆绑包中的任何文件。
对于每个文件,请加载文件路径:
let path = bundle.path(forResource: <filenameWitoutExtension>, ofType: <yourFileType>)
最后,您可以加载您的文件:
let data = NSData(contentsOfFile: path)
我不知道这是不是一个好习惯,但至少我可以访问我的框架资源。希望它会有所帮助。