2017-01-01 7 views
0

私はここに私のコードですタイトルが複雑である知っているが、本質的に、この文字列に特定の文字が含まれている場合、Swiftは拡張文字を削除しますか?

let gif = UIImage(gifName: (String(format: "%03d", self.animal.speciesId!))) 
    self.gifIBO.setGifImage(gif, manager: gifManager) 
    gifIBO.contentMode = UIViewContentMode.center 

をやろうとしてイム。私は、 "%03d"という形式(001、002、010)を使って番号をつけた画像のコレクションを持っています。しかし、私は1000以上の画像を持っており、これらの画像には余分な文字が含まれています。

EX:300 f.gif、231-m.gif

これらの画像はスキップされます。私の現在の解決策は、拡張文字を持つすべてのイメージの名前を変更することです。特定の要件を満たしている画像が見つかると、これらの拡張文字を迅速に除去するためのネイティブな方法はありますか?

たとえば、それが見つかった場合、画像300-f.gifが、最初の3つの文字が一致する、それは文字列の残りの部分を削除し、代わりにそれをスキップでそのイメージを使用して

を返すことは300.gif

が見つかりませんでしたする必要があります

コンソールにあります。

答えて

0

あなたのバンドル内のすべてのGIFを反復処理し、speciesIdで始まる1を探すことができます:

let gif = Bundle.main.urls(forResourcesWithExtension: "gif", subdirectory: nil)! 
    .first { 
     let pattern = String(format: "%03d(-.)?", speciesId) 
     return $0.lastPathComponent.range(of: pattern, options: [.regularExpression]) != nil 
    }.map { 
     UIImage(contentsOfFile: $0.path)! 
    } 
  • Bundle.main.urls(...)リストの最初のファイルのためのあなたのメインバンドル内のすべてのGIFファイル
  • first検索特定の条件に一致する名前です。条件はspeciesIdに基づく正規表現パターンです。パターンは言うの正規表現の方法である001(-.)?のようなものにうまくいく:
  • map
  • UIImageにパスを回す「という文字列 001、任意でダッシュ( -)と、別の文字が続く(どんな文字 .手段)」あなたのため
+0

このコードの機能について教えてください。 – user4938361

+0

最後の行をUIImage(gifNamed :(contentsOfFile:$ 0.path)に変更した後でコードが動作します!コンソールで画像を探していますが、今は画像が見つかりません。 .gifが見つかりません** @コード違う – user4938361

関連する問題