如何获得 JXA 对象的实际 class
How do I get actual class of JXA object
我试图区分 iTunes 播放列表是文件夹还是不是文件夹。
在 AppleScript 中似乎有两种方法可以做到这一点:
我可以获取所有文件夹播放列表并从用户播放列表中单独处理它们:
set userPlaylists to user playlists
set folderPlaylists to folder playlists
-- …do processing
我可以使用 class of pl is folder playlist
检查播放列表的 class(其中 pl
是我的播放列表)。
这两种方法似乎都不适用于 JXA。
第一种方法不起作用,因为访问 .folderPlaylists()
会导致 Error: Message not understood
(其中 app = Application('iTunes')
)。可以通过这种方式访问所有其他类型的播放列表(app.playlists()
、app.libraryPlaylists()
、app.radioTunerPlaylists()
、app.subscriptionPlaylists()
、app.userPlaylists()
、app.audioCDPlaylists()
都可以)。这是一个错误吗?
所以我尝试复制第二种方法。据我所知,ObjectSpecifier.classOf
应该给我对象类型作为字符串。但是,它只是 return 为我提供对象的对象说明符所请求的类型。
所以在 AppleScript 中 class of (first item of (playlists whose name is "«Name of a folder playlist»"))
给我 folder playlist
,ObjectSpecifier.classOf(app.playlists.whose({name: '«Name of a folder playlist»'})()[0])
只是 returns "playlist"
(大概是因为我用 app.playlists
到达对象)。
难道没有函数可以 return 播放列表的实际类型(例如 "folder playlist"
或 "user playlist"
)?
从播放列表中获取文件夹:
folderList = itunesApp.playlists.whose({_match: [ObjectSpecifier().class, 'folderPlaylist']})()
从播放列表对象区分 userPlaylist 和 folderPlaylist:
- 使用:
myobj.class() == 'folderPlaylist'
myList = itunesApp.playlists()
for (var i in myList) {
if (myList[i].class() == 'folderPlaylist') {
} else if (myList[i].class() == 'userPlaylist') {
}
}
我试图区分 iTunes 播放列表是文件夹还是不是文件夹。
在 AppleScript 中似乎有两种方法可以做到这一点:
我可以获取所有文件夹播放列表并从用户播放列表中单独处理它们:
set userPlaylists to user playlists set folderPlaylists to folder playlists -- …do processing
我可以使用
class of pl is folder playlist
检查播放列表的 class(其中pl
是我的播放列表)。
这两种方法似乎都不适用于 JXA。
第一种方法不起作用,因为访问 .folderPlaylists()
会导致 Error: Message not understood
(其中 app = Application('iTunes')
)。可以通过这种方式访问所有其他类型的播放列表(app.playlists()
、app.libraryPlaylists()
、app.radioTunerPlaylists()
、app.subscriptionPlaylists()
、app.userPlaylists()
、app.audioCDPlaylists()
都可以)。这是一个错误吗?
所以我尝试复制第二种方法。据我所知,ObjectSpecifier.classOf
应该给我对象类型作为字符串。但是,它只是 return 为我提供对象的对象说明符所请求的类型。
所以在 AppleScript 中 class of (first item of (playlists whose name is "«Name of a folder playlist»"))
给我 folder playlist
,ObjectSpecifier.classOf(app.playlists.whose({name: '«Name of a folder playlist»'})()[0])
只是 returns "playlist"
(大概是因为我用 app.playlists
到达对象)。
难道没有函数可以 return 播放列表的实际类型(例如 "folder playlist"
或 "user playlist"
)?
从播放列表中获取文件夹:
folderList = itunesApp.playlists.whose({_match: [ObjectSpecifier().class, 'folderPlaylist']})()
从播放列表对象区分 userPlaylist 和 folderPlaylist:
- 使用:
myobj.class() == 'folderPlaylist'
myList = itunesApp.playlists() for (var i in myList) { if (myList[i].class() == 'folderPlaylist') { } else if (myList[i].class() == 'userPlaylist') { } }