gpt4 book ai didi

cocoa - 如何以编程方式检索 iTunes 首选项以查找音频库?

转载 作者:行者123 更新时间:2023-12-03 16:16:11 25 4
gpt4 key购买 nike

我正在 Mac 上的 Cocoa 中创建一个播放音频的应用程序。我认为应用程序在用户计算机上搜索音频文件的最佳位置是从 iTunes 获取目录路径。如何从 iTunes 检索目录路径?这会是某种偏好设置吗?

谢谢。

最佳答案

为了那些将来会遇到此问题的人,我在下面记录了我使用的方法。

我决定不使用 Karelia 框架,因为我不需要所有的花哨功能。我只需要找到 iTunes 库并显示歌曲列表。

我浏览了 Karelia 框架,看起来他们通过用户默认设置找到 iTunes 库,如下所示。

+ (NSArray*) parserInstancesForMediaType:(NSString*)inMediaType
{
NSMutableArray* parserInstances = [NSMutableArray array];

if ([self isInstalled])
{
CFArrayRef recentLibraries = CFPreferencesCopyAppValue((CFStringRef)@"iTunesRecentDatabases",(CFStringRef)@"com.apple.iApps");
NSArray* libraries = (NSArray*)recentLibraries;

for (NSString* library in libraries)
{
NSURL* url = [NSURL URLWithString:library];
NSString* path = [url path];
BOOL changed;
(void) [[NSFileManager imb_threadSafeManager] imb_fileExistsAtPath:&path wasChanged:&changed];

NSString *libraryPath = [path stringByDeletingLastPathComponent]; // folder containing .xml file
[IMBConfig registerLibraryPath:libraryPath];

IMBiTunesParser* parser = [[[self class] alloc] initWithMediaType:inMediaType];
parser.mediaSource = path;
parser.shouldDisplayLibraryName = libraries.count > 1;
[parserInstances addObject:parser];
[parser release];
}

if (recentLibraries) CFRelease(recentLibraries);
}

return parserInstances;
}

使用上述方法,您可以使用以下代码找到所有 iTunes 库。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSDictionary *userPref = [userDefaults persistentDomainForName:@"com.apple.iApps"];

NSArray *recentDatabases = [userPref objectForKey:@"iTunesRecentDatabases"];

for (NSString *key in recentDatabases)
{
NSLog(@"%@", key);
}

此外,如果您检查用户默认 iApps 字典,您可以使用这些其他键来获取其他应用程序的信息

iMovie
iPhotoAutoImportPath
iPhotoRecentDatabases
iTunesRecentDatabases
iTunesRecentDatabasePaths

关于cocoa - 如何以编程方式检索 iTunes 首选项以查找音频库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4703945/

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