2016-04-02 13 views
0

Varlık kataloğunda belirli bir önek ile resimleri saymak mümkün mü?Belirli bir önek ile varlık kataloğundaki resimleri saymak mümkün mü?

Cocktail_01

Cocktail_02

...

Cocktail_nn

ve diğer benzeri gruplar: exampe için , şöyle görüntüler var. Bu var

var rec_cocktail = [UIImage]() 
    for i in 1..<32 { 
     if i < 10 { 
      let name: String = "Cocktail__0" + i.description 
      rec_cocktail.append(UIImage(named: name)!) 
     } else { 
      let name: String = "Cocktail__" + i.description 
      rec_cocktail.append(UIImage(named: name)!) 
     } 
    } 
    alcoholImages.append(rec_cocktail) 

mükemmel çalışır, ancak ben yüklemek için birkaç gruplarına sahip ve her biri farklı görüntü vardır: benim app başladığında

, ben kod aşağıda sevmiyorum. Varlık kataloğundan resim eklediğimde veya kaldırdığımda, aralığı her defasında kontrol etmem ve değiştirmem gerekiyor.

cevap

2

Images.xcassets yerine klasörleri kullanmak daha kolay olabilir. Bilgisayarınızda beğendiğiniz bir hiyerarşi oluşturun ve bunu Xcode projenize sürükleyin. seçtiğinizden emin olun: Uygulamanızı bir döngü kullanarak bu klasörlerin içindeki öğeler adımlayabilirsiniz oluştururken artık klasör başvuruları çünkü

herhangi eklenen klasörleri Sonra

için klasör başvuruları oluşturun. Örneğin, "Kokteyl" adlı bir klasöre sürükledim ve referansı oluşturdum. Şimdi ben kullanarak bu klasörün içindeki öğelere adımlayabilirsiniz:

let resourcePath = NSURL(string: NSBundle.mainBundle().resourcePath!)?.URLByAppendingPathComponent("Cocktail") 
let resourcesContent = try! NSFileManager().contentsOfDirectoryAtURL(resourcePath!, includingPropertiesForKeys: nil, options: NSDirectoryEnumerationOptions.SkipsHiddenFiles) 

for url in resourcesContent { 
    print(url) 
    print(url.lastPathComponent) 
    print(url.pathExtension!) // Optional 

} 

url.lastPathComponent görüntü (örneğin Cocktail_01.jpeg) ve url kendisinin dosya adıdır görüntünün tam yoludur.

Bir klasör yapısını sürdürürseniz, bunların üzerinde yineleme yapmak çok kolaydır, aynı klasördeki tüm görüntüleri istediğiniz gibi yalnızca ihtiyacınız olan görüntü adlarıyla bir dizi oluşturabilir ve bunu kullanarak yineleyin:

// The Array of Image names 
var cocktailImagesArray : [String] = [] 

// Add images to the array in the 'for url in resourceContent' loop 
if (url.lastPathComponent?.containsString("Cocktail")) { 
    self.cocktailImagesArray.append(url.lastPathComponent) 
} 

Bu yolla Kokteyl içeren tüm resimleriniz var ve bunları dizinize eklediniz. Şimdi yeni oluşturulan dizininizi kullanarak basit yineleme yapabilirsiniz:

for imageName in self.cocktailImagesArray { 
    // Do something 
} 
İlgili konular