以编程方式访问TVOS的Assets文件夹中的文件/文件夹

问题描述 投票:0回答:1

我正在使用Swift 3.0开发一个TVOS 10项目,我正在尝试从控制器访问Assets文件夹中的文件。

我有这个数组:

var posters: [String] = ["image1", "image2", "image3","image4", "image5"]

但我想以编程方式填充此数组。因此,如果我更改资产中的文件,则数组的内容应该更改。

因为后来我这样做:

//currentImage is an ImageView in storyboard
 currentImage.image = UIImage(named: posters[currentPoster])

这是我的files.enter image description here的层次结构

这是我尝试过的,但它没有给我我想要的东西。

if let resourcePath = Bundle.main().resourcePath {
        print(resourcePath)
        do {
            let temp = try FileManager.default().contentsOfDirectory(atPath: resourcePath)
            print(temp)
            let assetsPath = resourcePath + "/" + temp[6]
            let temp2 = try FileManager.default().contentsOfDirectory(atPath: assetsPath)
            print (temp2)
        }
        catch let error as NSError {
            print(error)
        }
    }

输出:

/var/containers/bundle/application/9AE CCD B0-DD5F-4377-9237-6E7DA1E14A39/poster A PPTV.app

[“Assets.car”,“Base.lproj”,“Frameworks”,“Info.plist”,“META-INF”,“PkgInfo”,“PosterAppTV”,“_ CodeSignature”,“embedded.mobileprovision”,“libswiftRemoteMirror。 dylib“]

错误域= NSCocoaErrorDomain代码= 256“无法打开文件”PosterAppTV“。” UserInfo = {NSFilePath = / var / containers / Bundle / Application / 9AECCDB0-DD5F-4377-9237-6E7DA1E14A39 / PosterAppTV.app / PosterAppTV,NSUserStringVariant =(Folder),NSUnderlyingError = 0x1740524e0 {Error Domain = NSPOSIXErrorDomain Code = 20“not a a目录”}}

有关如何获取Assets / Posters文件夹中文件名称列表的任何帮助?此外,如果这可能无法实现,是否有其他方法可以将某些图片存储到文件夹中,然后以编程方式访问这些文件的名称?

ios swift nsfilemanager tvos swift3
1个回答
0
投票

当您将图像放在assets中时,这意味着xcode记住了您的所有图像名称,无需调用任何文件夹名称或目录路径,现在您可以直接在代码中调用图像名称。

这是你在找什么:

var posters: [String] = ["image1", "image2", "image3","image4", "image5"]

if let myImage = UIImage(named: posters[2]) {
         imageView.image = myImage  //image3 is called at the index of 2 in posters array
   } 
 else {
      print("image not found")
 }

或者您可以在一行中检索图像,如下所示:

imageView.image = UIImage(named: posters[2]) 
© www.soinside.com 2019 - 2024. All rights reserved.