我正在尝试从 ios 媒体库中检索元信息,然后以 json 格式将其发送到服务器。
但是,我发现循环 MPMediaQuery 结果并拉取元信息非常慢。
MPMediaQuery *query = [[MPMediaQuery alloc]init];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInteger:MPMediaTypeMusic] forProperty:MPMediaItemPropertyMediaType];
[query addFilterPredicate:predicate];
NSMutableArray *songs = [[NSMutableArray alloc] init];
songs = [query items];
[songs enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[obj valueForProperty:MPMediaItemPropertyTitle];
[obj valueForProperty:MPMediaItemPropertyPlaybackDuration];
[obj valueForProperty:MPMediaItemPropertyArtist];
[obj valueForProperty:MPMediaItemPropertyAlbumTitle];
[obj valueForProperty:MPMediaItemPropertyGenre];
[obj valueForProperty:MPMediaItemPropertyAlbumTrackNumber];
}];
对于 9000 首歌曲的库,完成枚举循环可能需要 25 秒以上的时间。
有没有更快的方法来批量检索元信息?在这种情况下,ValueForProperty 似乎效率很低(循环中的每个调用都会增加大约 5 秒)。