2016-06-23 49 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