QQ音乐中要关注的问题

关于制做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音乐的其它注意事项我会陆续的为你们更新.

相关文章
相关标签/搜索