Как найти конкретные изображения, которые начинаются со строки в Swift Assets.xcassets - PullRequest
0 голосов
/ 13 января 2019

Я разрабатываю быстрое приложение и мне нужно найти несколько изображений, которые начинаются с определенной строки, но я не знаю, как найти эти изображения из Assets.xcassets.

Все мои изображения находятся в Assets.xcassets

Спасибо

Ответы [ 3 ]

0 голосов
/ 13 января 2019

Папка Assets не может быть доступна таким образом. Один из способов сделать это - создать папку со всеми изображениями на вашем компьютере и перетащить в проект Xcode. Не забудьте выбрать опцию «Создать ссылки на папки для любых добавленных папок». С помощью указанной папки вы можете получить доступ ко всем изображениям:

guard let _resourcePath = Bundle.main.resourcePath else{
        return
    }
    do{
        if let url = NSURL(string: _resourcePath)?.appendingPathComponent("YOUR FOLDER NAME"){
            let resourcesContent = try FileManager().contentsOfDirectory(at: url, includingPropertiesForKeys: nil, options: .skipsHiddenFiles)

            for imageUrl in resourcesContent {
                let imageName = imageUrl.lastPathComponent
                print(imageName)
                //CHECK IMAGE NAME STRING
            }
        }
    }catch let error{
        print(error.localizedDescription)
    }
0 голосов
/ 14 января 2019

Знаете ли вы имена изображений сами? Я имею в виду, вы сами загружаете изображения в Assets.xcassets или добавляете их программно? Если вы это сделаете, вы можете создать словарь и добавить имена изображений вручную или в коде или программно каждый раз, когда изображение добавляется в Assetts.xcassets.

imageDict = [category: [animalType]] для двумерного диктанта. Получите доступ к нему следующим образом

import UIKit

var NaturePicsDict: [String : [String]] = ["cats":["Lion", "Tiger", "Panther"],
                                          "Birds": ["Hawk", "Parrot", "Sparrow", "Blackbird"]
                                          ]

//create an array of animal names for each category and then construct the full image file name from the category:animal using string concatination.

var animalsForCategory:[String] = []

for category in NaturePicsDict.keys {
    print("key = \(category) animal =" ,NaturePicsDict[category]!)
    let animals = NaturePicsDict[category]!
    for animalName in animals {
        let imageName: String = "\(category)_\(animalName)"
        print("imageName = \(imageName)")
    }
}

извините за все правки. Я учусь пользоваться этим сайтом. Во всяком случае, вывод из моего фрагмента кода:

key = cats animal = ["Lion", "Tiger", "Panther"]
imageName = cats_Lion
imageName = cats_Tiger
imageName = cats_Panther
key = Birds animal = ["Hawk", "Parrot", "Sparrow", "Blackbird"]
imageName = Birds_Hawk
imageName = Birds_Parrot
imageName = Birds_Sparrow
imageName = Birds_Blackbird

Надеюсь, это поможет. Я только что использовал 3D-словарь в приложении, которое я пишу, и нашел его очень компактным способом хранения и доступа к детализации.

0 голосов
/ 13 января 2019

Во-первых, вы должны назвать изображения, которые вы хотите с идентификатором в начале. Я буду использовать слово звезда для примера.

Изображения должны иметь такие имена, как star1, star2, star3, star4 и т. Д. Этот код должен работать.

var imagesCollected = [UIImage]()

for n in 1 ... 10{ //10 is whatever number you want
    let imageloaded = UIImage(named: "star\(n)")
    imagesCollected.append(imageloaded)
}

В imagesCollected должны быть все ваши изображения. Дайте мне знать, если это работает.

Найл

...