我有一个从 iTunes 获取 audioCDPlayList 的应用程序。此应用程序在 macOS High Sierra 上运行良好,但在 macOS Mojave Beta 3 (18A326h)上无法正常运行。
我调查了原因,然后发现以下奇怪的行为:
GetAudioCDInfoFromiTunes.h
#import <Foundation/Foundation.h>
#import <ScriptingBridge/ScriptingBridge.h>
#import "iTunes.h"
@interface GetAudioCDInfoFromiTunes : NSObject
- (NSMutableDictionary *)getAudioCDInfoFromiTunes;
@end
GetAudioCDInfoFromiTunes.m
- (NSMutableDictionary *)getAudioCDInfoFromiTunes {
// Declear iTunes scripting bridge variable
iTunesApplication *iTunesApp = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
SBElementArray *sources = [iTunesApp sources];
NSLog(@"sources=%@", sources);
NSLog(@"count=%ld", [sources count]);
iTunesPlaylist *aAudioCDPlayList = nil;
for (iTunesSource *src in sources) {
NSLog(@"src=%@", src);
SBElementArray *playlists = [src audioCDPlaylists];
NSLog(@"playlists=%@", playlists);
for (iTunesPlaylist *aPlaylist in playlists) {
NSLog(@"aplaylist=%@", aPlaylist);
if ([aPlaylist isKindOfClass:[NSClassFromString(@"ITunesAudioCDPlaylist") class]]) {
aAudioCDPlayList = [aPlaylist get];
break;
}
}
}
... SNIP ...
}
执行上述代码,Line.8count
的NSLogsources
为 0。因此for
Line.12 的循环不起作用。然后结果[aPlaylist get]
为空。
有谁知道count
ofsources
为0的原因?
请让我知道如何在 Mojave Beta 上运行我的 ScriptingBridge 代码...