关于制做QQ音乐中关于文件加载的问题ios
在iosAPP中,通常咱们应该尽量的使咱们开发的APP运行时所占用的内存尽量的小正则表达式
因此在咱们运行APP时,加载文件的时候,咱们须要采起不同的方法数组
在这里咱们应该经过文件所在的路径来读取这个文件,而不是把文件直接加载到咱们应用的APP中spa
这里我就以QQ音乐中加载歌词为例component
1.orm
//根据文件名称获取文件地址对象
NSString *path =[[NSBundle mainBundle] pathForResource:fileName ofType:nil];排序
2.ip
//根据文件地址获取转化后的整体的字符串内存
NSString *lyricStr =[NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error :NULL];
3.
//将歌词整体字符串按行拆分开,每一句都做为一个数组元素存放到数组中
NSArray *lineStrs =[lyricStr componentsSeparatedByString:@"\n"];
4.
//设置歌词时间正则表达式格式
NSString *pattern =@"\\[[0-9]{2}:[0-9]{2}.[0-9]{2}\\]";
NSRegularExpression *reg=[NSRegularExpression regularExpressionWithPattern:pattern options:0 error:NULL];
5.
//建立可变数组存放歌词模型
NSMutableArray *lyrics = [NSMutableArray array];
6.
//遍历歌词字符串数组
for (NSString *lineStr in lineStrs) {
NSArray *results = [reg matchesInString:lineStr options:0 range:NSMakeRange(0,lineStr.length)];
//歌词内容
NSTextCheckingResult *lastResult = [results lastObject];
NSString *content = [lineStr substringFromIndex:lastResult.range.location + lastResult.range.length];
//每个结果的range
for(NSTextCheckingResult *result in results) {
NSString *time =[lineStr substringWithRange:result.range];
//对于 NSDateFormatter 相似的重大开小对象,最好使用单例管理
NSDateFormatter *formatter =[NSDateFormatter sharedDateFormatter];
formatter.dateFormat =@"[mm:ss.SS]";
NSDate *_Nullable timeDate =[formatter dateFromString:time];
NSDate *_Nullable initDate =[formatter dateFromString:@"00:00.00"];
//建立模型
WPFLyric *lyric = [[WPFLyric alloc] init];
lyric.content=content;
//歌词的开始时间
lyric.time = [timeDate timeIntervalSinceDate:initDate];
//将歌词对象添加到模型数组汇总
[lyrics addObject:lyric];
}
}
7.
//按照时间正序排序
NSSortDescriptor *sortDes =[NSSortDescriptor sortDescriptorWithKey:@"time" ascending:YES];
[lyrics sortUsingDescriptors:@[sortDes]];
关于制做QQ音乐的其它注意事项我会陆续的为你们更新.