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音樂的其它注意事項我會陸續的爲你們更新.

相關文章
相關標籤/搜索