无法在框架内加载资产

时间:2017-02-16 16:23:29

标签: xcode assets

我正在尝试加载存储在我创建的资产目录中的资产,如下所示:

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

如果我在应用程序项目中,这可以正常工作,但如果我在框架项目中,它就不起作用。我该怎么办?

我发现这个thread提到它是不可能的。这是我遇到麻烦的原因吗?如果是,是否有任何解决方法?

1 个答案:

答案 0 :(得分:1)

我找不到在框架内使用Asset目录的方法,似乎不可能。 但是我设法使用Bundle处理我的JSON文件。这就是我所做的。

  1. 创建一个包含资源的新组
  2. 将文件拖放到此论坛
  3. 现在您必须使用Bundle来加载文件:

    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)
    

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