我有一个有几首歌的应用程序。文件格式为:index.name.mp3
例如:
1.Baby.mp3
2.Just Give Me A Reason.mp3
我有一个表格视图来显示歌曲,并存储所选歌曲的索引
e.g。如果用户点击2.Just Give Me A Reason.mp3
,我会将数字2存储在NSUserDefault
有没有办法用它的部分名称来获取文件(例如前缀:2,后缀mp3)
以防万一不清楚。我不有一个文件名列表。
我所知道的是有多少个文件(例如50个),它们的索引来自(1到50)
答案 0 :(得分:1)
原始答案
你有一个列表(或数组)的歌曲填充你的桌面视图。
假设它是一个数组,你可以通过该数组进行枚举,只需寻找与该数字匹配的匹配项:
NSString *getFilenameMatchingPrefix:(NSString *)prefixString
{
// array of filenames is what populates your table view
for(NSString *filename in arrayOfFilenames)
{
// convert filename to numeric prefix / name / suffix
NSArray *filenameSplitOut = [filename componentsSeparatedByString:@"."];
// the numeric prefix is what we want
NSString *prefixFromFile = [filenameSplitOut objectAtIndex:0];
if([prefixString isEqualToString:prefixFromFile])
{
// and we can return a filename, or we can return a file URL if we wanted...
return(filename);
}
}
return nil;
}
NEWER ANSWER
通常,最好使用文件URL来处理文件系统。但是为了简单起见,我们将使用文件路径(NSString对象)。
鉴于父母"包含mp3文件的文件夹:
NSArray *getAllFilesInAFolder:(NSString *)parentFolderPath
{
NSError *error = nil;
arrayOfFiles = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:parentFolderPath error:&error];
if(error)
{
NSLog(@"error getting contents of folder %@ - %@", [error localizedDescription]);
}
return(arrayOfFiles):
}
NSString *getFilenameMatchingPrefix:(NSString *)prefixString
{
// assuming you are hiding the .mp3 files in the resource folder of your app...
NSArray *allMusicFiles = [self getAllFilesInAFolder:[[NSBundle mainBundle] resourcePath]];
// allMusicFiles is an array of NSString objects with filenames from the specified directory
for(NSString *filename in allMusicFiles)
{
// convert filename to numeric prefix / name / suffix
NSArray *filenameSplitOut = [filename componentsSeparatedByString:@"."];
// the numeric prefix is what we want
NSString *prefixFromFile = [filenameSplitOut objectAtIndex:0];
if([prefixString isEqualToString:prefixFromFile])
{
// and we can return a filename, or we can return a file URL if we wanted...
return(filename);
}
}
return nil;
}
答案 1 :(得分:1)
我在这里出去了,但你也可以使用mp3文件中的元数据:How to extract metadata from audio files on iOS
iTunes中的歌曲如何具有标题和艺术家名称,您可以对其进行编辑并阅读,以便您不必分割字符串。通过这种方式,您可以获得更多信息,如持续时间和艺术家等。然后,如果没有元数据,您可以恢复分解文件名。
我不会单独使用文件名,因为如果您使用服务器来托管这些文件并且您拥有相同名称的文件,则需要添加一些内容来区分(2)
或随机字符串等文件并且你不希望在你的应用程序中。但那只是我而且只是一个建议。