2016-06-23 76 views
3

我想使用iTunes ScriptingBridge框架在Swift 2.3/3中設置曲目的評分。我有斯威夫特的iTunes 與協議的定義,因爲這(全here):如何使用Swift協議設置iTunes ScriptingBridge的屬性

@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橋接頭文件。

回答

2

我使用setRating方法中的Objective-C代碼,我不能用rating屬性來設置評分。

iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"]; 
[[iTunes currentTrack] setRating:60]; 

斯威夫特iTunes.h文件一樣。


這部作品斯威夫特V2.2

  • 在你的 「iTunes.swift」 文件,你必須添加setRating功能
  • @objc optional var rating: Int {get}  
    @objc optional func setRating(_: Int) 
    

  • 雨燕代碼:

  • let iTunesApp = SBApplication(bundleIdentifier: "com.apple.iTunes") as! iTunesApplication 
        let currentTrack = iTunesApp.currentTrack 
        currentTrack!.setRating!(10) 
    
+0

哦,完美。謝謝! – pvieito