无法在 tvOS 应用程序中加载 LCR 图像

Posted

技术标签:

【中文标题】无法在 tvOS 应用程序中加载 LCR 图像【英文标题】:Unable to load LCR image in tvOS apps 【发布时间】:2015-10-16 12:06:02 【问题描述】:

我正在尝试使用苹果文档中描述的“contentsOfFile”方法在 UIImageView 中加载 LCR 图像,但我收到了 nil 图像错误。谁能确认我们如何从服务器加载 LCR 图像?

我正在使用的代码:

UIImage(contentsOfFile: "LCR file url")

我在控制台中遇到错误:

BOMStorage BOMStorageOpenWithSys(const char , Boolean, BomSys ): 不能 open: '/LCR file url' 没有那个文件或目录

我注意到的一件事是它在我的实际网址前添加了“/”。我认为这是因为它在本地存储中寻找文件。有谁知道它的解决方案是什么?

我什至尝试过使用这个:

下载的文件——使用 imageWithContentsOfFile 加载图像:

但没用:(

【问题讨论】:

【参考方案1】:

好的,我找到了解决这个问题的方法。因此,如果其他人面临同样的问题,我会在这里发帖。下面是带解释的代码:

if let url = NSURL(string: "https://.lcr-file-url") 
        if let data = NSData(contentsOfURL: url)
          let documents = NSURL(string: NSSearchPathForDirectoriesInDomains(.CachesDirectory, .UserDomainMask, true)[0])
          let writePath = documents!.URLByAppendingPathComponent("file.lcr")
          data.writeToFile(writePath.absoluteString, atomically: true)
          let image = UIImage(contentsOfFile: writePath.absoluteString)
        
      

基本上我们需要下载图片数据并保存在本地文件中,然后使用 contentsOfFile 方法来获得实际的图片。

如果有人知道比这更好的解决方案,我会很高兴听到 :)

【讨论】:

【参考方案2】:

contentsOfFile 假定您传递的是本地文件的路径,而不是某个远程服务器上托管的图像的 URL。

您应该在此处将数据加载到 NSData 对象中,然后通过UIImage(withData: dataFromServer) 将其传递给 UIImage。

同步进行:

if let url = NSURL(string: "http://www.apple.com/euro/ios/ios8/a/generic/images/og.png") 
    if let data = NSData(contentsOfURL: url)
        let yourImage = UIImage(data: data)
    

我找到的代码in this related question

And here's a blog post on how to do it asynchronously.

【讨论】:

你读过这个问题吗?我问的是不是 .PNG 的 LCR 图像 :( 如果我将此代码与 LCR 一起使用,我会得到 nil 图像:/ 是的,我确实读过你的问题。 LCR 和 PNG 图像都由 UIImage 处理。 If you're looking at the "Incorporating Parallax Images" section of the App Programming Guide for tvOS,看来您需要先下载图像。无论如何,contentsOfFile: 需要的是本地文件的路径,而不是存储在远程服务器上的文件的 URL。那么为什么不尝试我在上面建议的技术,使用 lcr URL 呢? 我试过了,但是当我将数据转换为图像时它给了我 nil :( 如果您尝试在本地开始使用 .lcr 文件(在将其放到服务器上之前),它也会为零吗?我问的原因是我想知道 .lcr 文件是否有效。 如果我们需要放本地苹果说我们应该放 .lsr 文件。但是如果我们需要放在服务器上,我们应该放置 .lcr 文件:(这里有更多信息:developer.apple.com/library/prerelease/tvos/documentation/…我将 lsr 文件转换为 lcr 并上传到服务器,所以我认为它应该是有效的 :(

以上是关于无法在 tvOS 应用程序中加载 LCR 图像的主要内容,如果未能解决你的问题,请参考以下文章

URLImage 从不在 SwiftUI 的小部件应用程序中加载图像 [重复]

无法在 AppDelegate 应用程序方法的数组中加载 HTTP POST 响应数据。如何解决这个问题?

图像,CSS和JS未在MVC4应用程序中加载

在OpenGL中加载图像以用于GIS应用程序

在 Django 中加载 CSS/图像

IBM Worklight - 无法在 Dojo 应用程序中加载 index.html