繁体   English   中英

Swift 2中iTunes的脚本桥-无法专门化非通用类型

[英]Scripting Bridge for iTunes in Swift 2 - cannot specialize non-generic type

我正在尝试将sdefsdp生成的Scripting Bridge头转换为Swift,以便能够在没有桥接头和obj-c包装器的情况下使用它。 我想我在SwiftingBridge的帮助下非常接近,但是例如,我仍然面临属性或返回值类型为SBElementArray<iTunesAirPlayDevice>NSArray<iTunesAirPlayDevice>的问题。 如果让他们这样,我将面临Cannot specialize non-generic type 'SBElementArray'等问题。

我可以将目标C代码的那一部分转换为Swift吗?

目标C代码示例:

// The application program
@interface iTunesApplication : SBApplication

- (SBElementArray<iTunesAirPlayDevice *> *) AirPlayDevices;
- (SBElementArray<iTunesBrowserWindow *> *) browserWindows;
- (SBElementArray<iTunesEncoder *> *) encoders;
- (SBElementArray<iTunesEQPreset *> *) EQPresets;
- (SBElementArray<iTunesEQWindow *> *) EQWindows;
- (SBElementArray<iTunesPlaylistWindow *> *) playlistWindows;
- (SBElementArray<iTunesSource *> *) sources;
- (SBElementArray<iTunesVisual *> *) visuals;
- (SBElementArray<iTunesWindow *> *) windows;
// ...
@property (copy) NSArray<iTunesAirPlayDevice *> *currentAirPlayDevices;  // the currently selected AirPlay device(s)
// ...

我可以通过更改代码以返回本机​​数组对象来使其工作:

@objc protocol iTunesApplication {
//...
optional func AirPlayDevices() -> [iTunesAirPlayDevice]
optional func browserWindows() -> [iTunesBrowserWindow]
optional func encoders() -> [iTunesEncoder]
optional func EQPresets() -> [iTunesEQPreset]
optional func EQWindows() -> [iTunesEQWindow]
optional func playlistWindows() -> [iTunesPlaylistWindow]
optional func sources() -> [iTunesSource]
optional func visuals() -> [iTunesVisual]
optional func windows() -> [iTunesWindow]
optional var AirPlayEnabled: Bool {get}
//...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM