gpt4 book ai didi

ios - 使用 MPMediaQuery 加载播放列表

转载 作者:行者123 更新时间:2023-11-28 17:33:27 27 4
gpt4 key购买 nike

在我的应用中,我想将用户播放列表保存在一个 plist 文件中,并在应用启动时加载该播放列表。

这是我用来保存的代码:

if (self.backgroundMusicItems) {
NSMutableArray *songsID = [[NSMutableArray alloc] initWithCapacity:0];
MPMediaItem *item;
for (item in self.backgroundMusicItems.items) {
NSNumber *songId = [item valueForProperty:MPMediaItemPropertyPersistentID];
[songsID addObject:songId];
}
NSString *documentdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [documentdir stringByAppendingPathComponent:@"playlist.plist"];
[songsID writeToFile:filePath atomically:YES];
}

这是我用来加载的代码:

NSString *documentdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [documentdir stringByAppendingPathComponent:@"playlist.plist"];

NSArray *myArray = [[NSArray alloc] initWithContentsOfFile:filePath];

NSMutableSet *predicates = [[NSMutableSet alloc] initWithCapacity:0];

if (myArray.count > 0) {
NSNumber *songId;
for (songId in myArray) {
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:songId forProperty:MPMediaItemPropertyPersistentID];
[predicates addObject:predicate];
}
MPMediaQuery *query = [[MPMediaQuery alloc] initWithFilterPredicates:predicates];

NSArray *mediaItems = [query items];
if (mediaItems.count > 0) [GameOptions sharedClass].backgroundMusicItems = [[MPMediaItemCollection alloc] initWithItems:mediaItems];
}

myArray 包含 2 个项目,但 [query items] 方法返回 0 个项目。我哪里错了??

最佳答案

您要求歌曲的 MPMediaItemPropertyPersistentID 设置为 song1 AND song2 的值 - 这将始终返回零结果,因为逻辑上任何歌曲都不可能匹配两个不同的 MPMediaItemPropertyPersistentID。

您需要为每个持久性 ID 运行一个查询。

关于ios - 使用 MPMediaQuery 加载播放列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10553599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com