Swift3 tvOS:asset在interface builder中使用时可以工作,但不能以编程方式工作

Swift3 tvOS:asset在interface builder中使用时可以工作,但不能以编程方式工作,swift3,uiimageview,cocoapods,tvos,Swift3,Uiimageview,Cocoapods,Tvos,所以我遇到了一个奇怪的问题。我正在添加一个由另一个开发人员启动的现有项目,该开发人员已经拥有了运行良好的资产 我添加了一些新的图像资源,当我在界面生成器中按名称引用它们时(放置UIImageView时),它们工作得非常好,但是当我尝试创建同名的UIImage时,它总是返回nil let myImage = UIImage(named: "my-image-name") // Always returns nil 我已经确保它有正确的目标,我没有打字错误,等等,但它似乎不起作用。对于一些额外的信

所以我遇到了一个奇怪的问题。我正在添加一个由另一个开发人员启动的现有项目,该开发人员已经拥有了运行良好的资产

我添加了一些新的图像资源,当我在界面生成器中按名称引用它们时(放置
UIImageView
时),它们工作得非常好,但是当我尝试创建同名的
UIImage
时,它总是返回nil

let myImage = UIImage(named: "my-image-name") // Always returns nil

我已经确保它有正确的目标,我没有打字错误,等等,但它似乎不起作用。对于一些额外的信息,这是在一个我正在修改的本地开发pod中。

是您的主应用程序包中的资产,还是另一方面,在您最后提到的一个本地开发pod中

正如您在UIImage文档中看到的:

UIImage初始值设定项在中有第二个参数
,用于指示实际定义资产的捆绑包,将主应用程序捆绑包作为默认值

这意味着,如果您的资产“我的图像名称”未在主捆绑包中定义,则将找不到它

如果您试图从定义了资产的同一捆绑包中加载资产,则可以使用以下代码加载资产:

let image = UIImage(named: "my-image-name", in: Bundle(for: self))
另一方面,如果您试图从不同的捆绑包加载资产,则必须指明捆绑包

let image = UIImage(named: "my-image-name", in: Bundle(forClass: CLASSINYOURLOCALFRAMEWORK.self))