我想使用iTunes ScriptingBridge框架在Swift 2.3 / 3中设置曲目的评级。我有Swift iTunes 标题,协议定义为此(完整标题 here):
@objc protocol iTunesTrack: iTunesItem {
@objc optional var album: NSString {get set}
@objc optional var albumArtist: NSString {get set}
@objc optional var rating: Int {get set}
}
extension SBObject: iTunesTrack {}
但是当我尝试设定评级时:
var iTunesApp = SBApplication(bundleIdentifier: "com.apple.iTunes") as! iTunesApplication
var currentTrack = iTunesApp.currentTrack
currentTrack.rating = 10
Xcode编译器给我这个错误:
Cannot assign to property: 'currentTrack' is inmutable
我如何让它变得可变?我知道这个代码在Objective-C中有效,但我无法在Swift中使用它,并且它不能使用Objective-C头和Objective-C桥接头。
答案 0 :(得分:2)
我在 Objective-C 代码中使用setRating
方法,我无法使用rating
属性来设置评分。
iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
[[iTunes currentTrack] setRating:60];
Swift 与iTunes.h
文件相同。
适用于 Swift v2.2 :
setRating
函数@objc optional var rating: Int {get} @objc optional func setRating(_: Int)
Swift代码:
let iTunesApp = SBApplication(bundleIdentifier: "com.apple.iTunes") as! iTunesApplication let currentTrack = iTunesApp.currentTrack currentTrack!.setRating!(10)