gpt4 book ai didi

objective-c - 从 iTunes 获取所有艺术家的 Objective C keypath

转载 作者:太空狗 更新时间:2023-10-30 03:29:24 25 4
gpt4 key购买 nike

我正在使用键值编码从 iTunes 中获取所有艺术家:

[self.iTunes valueForKeyPath:@"sources.@distinctUnionOfArrays.playlists.@distinctUnionOfArrays.tracks.artist"];

现在,这工作正常。这是非常有效的。我也想对专辑做同样的事情。

[self.iTunes valueForKeyPath:@"sources.@distinctUnionOfArrays.playlists.@distinctUnionOfArrays.tracks.album"];

这里的问题是,有多张同名专辑,但不一定是同一位艺术家。有没有办法获取每张专辑的歌曲,这样我就可以找出它是什么艺术家,还可以得到它的封面?我知道有 NSPredicate,但这很慢。

具体的代码不重要,我只需要key-value编码部分。

谢谢!

最佳答案

这不是一个完整的答案。

为了像我这样最初不知道记录在哪里的人的利益:您必须在安装了 iTunes 的 Mac 上,然后运行命令

sdef /Applications/iTunes.app | sdp -fh --basename iTunes

这将神奇地创建iTunes.h在您当前的工作目录中。然后你可以通过搜索iTunes.h查看 API 的外观。它似乎没有正式记录在 Mac 开发者库或任何东西中。

每个iTunesTrack有一个 artistalbum 之外的属性(property)属性,所以我认为您真正想要做的就是返回一组独特的元组 (album, artist) .

好的,那么我们如何从单个 KVC 查询中获取元组数组呢?我们想写类似 sources.@distinctUnionOfArrays.playlists.@distinctUnionOfArrays.tracks.albumAndArtist 的东西并让它返回类似 NSArray 的东西的 NSDictionary ,例如 @[ @{ @"Help!", @"The Beatles" }, @{ @"No!", @"They Might Be Giants" }, ... ]

编辑 ughoavgfhw 在评论中建议下一步:您可以使用类别来定义 albumAndArtist像这样:

@interface iTunesTrack (albumAndArtist)
@property (readonly) NSDictionary *albumAndArtist;
@end

@implementation iTunesTrack (albumAndArtist)
-(NSDictionary *) albumAndArtist
{
return @{ @"album":self.album, @"artist":self.artist };
}
@end

现在你可以写下我们试图写的行了:

[self.iTunes valueForKeyPath:@"sources.@distinctUnionOfArrays.playlists.@distinctUnionOfArrays.tracks.albumAndArtist"];

这应该给你一个 NSArrayNSDictionary ,这基本上就是您想要的。请注意,我还没有测试过这段代码或任何东西!

关于objective-c - 从 iTunes 获取所有艺术家的 Objective C keypath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12359631/

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