2016-04-02 1 views
0

アセットカタログに特定のプレフィックスを持つ写真を数えることはできますか?特定のプレフィックスを持つアセットカタログの画像を数えることはできますか?

Cocktail_01

Cocktail_02

...

Cocktail_nn

をし、他の類似のグループ:exampeについては は、私のようなイメージを持っています。私のアプリが起動すると

、私は以下のようなコードを実行します。

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) 

これは完璧に動作しますが、私はロードするには、いくつかのグループがあり、それぞれが異なる画像の番号を持っています。私はアセットカタログから画像を追加または削除するたびに、範囲を確認して変更する必要があります。

答えて

2

Images.xcassetsの代わりにフォルダを使用する方が簡単かもしれません。好きな階層を作成し、Xcodeプロジェクトにドラッグします。あなたが選択していることを確認してください:

アプリを構築するときに、あなたが今、フォルダの参照を持っているので、あなたがループを使用してこれらのフォルダ内の項目を反復処理することができます次に任意の追加のフォルダ

用フォルダ参照を作成します。

たとえば、「Cocktail」というフォルダにドラッグして参照を作成しました。

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画像(例えばCocktail_01.jpeg)のファイル名であり、URL自体は、画像の完全なパスである:今は使用して、このフォルダ内のアイテムを反復することができます。

フォルダーの構造を維持する場合は、すべてのイメージを同じフォルダーに保存したい場合は、必要なイメージ名で配列を作成し、それを繰り返し使用することができます。

// 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) 
} 

このようにして、カクテルを含むすべての画像がアレイに追加されます。今度は、新しく作成した配列を単純に繰り返します:

for imageName in self.cocktailImagesArray { 
    // Do something 
} 
関連する問題