如何使用Swift协议设置iTunes ScriptingBridge的属性
问题描述:
我想使用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桥接头文件。
答
我使用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)
哦,完美。谢谢! – pvieito