2011-03-09 60 views

回答

21

你可以做到這一點適應下面的代碼:

NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: 
        [[NSBundle mainBundle] bundlePath] error:nil]; 
NSArray *pngs = [files filteredArrayUsingPredicate: 
       [NSPredicate predicateWithFormat:@"self ENDSWITH[cd] '.png'"]]; 
NSLog(@"%@", pngs); 

運行此代碼,您將在您的包中看到PNG列表。更改謂詞以匹配前綴你想要的:

NSArray *files = [[NSFileManager defaultManager] contentsOfDirectoryAtPath: 
        [[NSBundle mainBundle] bundlePath] error:nil]; 
NSArray *filesWithSelectedPrefix = [files filteredArrayUsingPredicate: 
            [NSPredicate predicateWithFormat:@"self BEGINSWITH[cd] 'prefix'"]]; 
NSLog(@"%@", filesWithSelectedPrefix); 
+0

工作正常.. sry爲最近的回覆... – xydev 2011-03-11 06:45:25

+0

@vfn你救我的時間謝謝你。 – 2013-12-06 12:13:07

1

更新了雨燕4.0:

在我而言,我一直在尋找與fileName-1.png開始文件,其中有可能是與其他文件前綴爲fileName

1)我想過使用正則表達式,但分割字符串更快,更容易,所以我去那條路線獲得前綴。

let myKnownFileNameString = "fileName-1.png" 
let filePrefix = myKnownFileNameString.split(separator: "-").first 

2)創建一個空的陣列來存儲圖片你會發現:

var imageArray: [UIImage] = [] 

3)然後,從包獲得的URL,filter他們map的網址UIImage實例:

if let filePrefix = filePrefix, let fileURLs = Bundle.main.urls(forResourcesWithExtension: "png", subdirectory: nil) { 
    imageArray = fileURLs.filter{ $0.lastPathComponent.range(of: "^\(filePrefix)", options: [.regularExpression, .caseInsensitive, .diacriticInsensitive]) != nil } 
         .map{ UIImage(contentsOfFile: $0.path)! } 
} 

從那裏,你有一系列的圖像,你可以做的東西(在UIImageView等動畫他們)

+1

有更合適的* sw​​iftier *方法,例如,您可以使用'Bundle.main.urls(forResourcesWithExtension:「png」,subdirectory:nil)''而不是'NSPredicate'使用'.filter { $ 0.range(:「^ \(filePrefix)」,選項:[.regularExpression,.caseInsensitive,.diacriticInsensitive])!=無}' – vadian 2018-03-06 20:36:48

+0

謝謝!我看到我的問題現有的答案是有點硬,所以我把東西扔在一起。我會根據您的建議進行更新。 – Adrian 2018-03-06 20:38:51

+1

我編輯你的答案與另一* swifty *改進。 – vadian 2018-03-06 21:29:00

相關問題