2011-10-11 22 views
1

是否有一種簡單方法可以返回符合設定命名方案的多個文件?試圖製作便宜又簡單的圖像序列播放器。我已經完成了繁重的工作,但是現在必須通過每個序列中的文件數量,這是一個更新的痛苦。iOS - 返回符合命名方案的文件數

例如

Image1_000 Image1_001 Image2_000 Image2_001 Image2_002

因此,如果命名方案被設置爲Image2_它會返回3,如果命名方案被設置爲Image1_它會返回2.

+1

不能完全確定你的意思,但是組合[的NSFileManager defaultManager] contentsOfDirectoryAtPath:],然後一些NSRegularExpression做匹配很可能是答案。 – jbat100

回答

2

NSPredicate的幫助下,您可以很容易地實現這一點,您可以在其中定義像語法這樣的正則表達式。這種情況就像這樣:

NSString *bundleRoot = [[NSBundle mainBundle] bundlePath]; 
NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:bundleRoot error:nil]; 
NSArray *onlyImagesStartWithTwo = [dirContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self BEGINSWITH 'Image2_'"]]; 

NSArray *onlyImagesStartWithTwo將所有圖像開始Image2_

希望這有助於...

+0

這似乎是我遵循的最佳途徑。它似乎有一個障礙tho,使用bundlePath導致崩潰,雖然Xcode似乎識別bundlePath。 – Mytheral

+0

你可以發佈崩潰的原因嗎?一種顛覆這種方式的方法是,如果你確切地知道圖像文件的前綴。文件目錄或緩存目錄等,然後你可以直接指定... –

+0

它崩潰與「NSArray * dirContents」行上的「EXC_BAD_ACCESS」,在那一點bundleRoot正確告訴我.App是。 users/Me/Library/Application Support/iPhone Simulator/4.3.2/Applications/ /TheApp.App 同樣會在相同的位置發生錯誤ipad – Mytheral

0

如果這些是在NSString的一個NSArray:

int counter = 0; 
for (NSString *str in strArray) { 
    if ([[[str componentsSeperatedByString:@"_"] objectAtIndex:0] isEqualToString:namingScheme]){ 
     counter++; 
    } 
}