2016-06-23 7 views
3

Я хочу установить рейтинг трека в Swift 2.3/3 с использованием инфраструктуры iTunes ScriptingBridge. У меня есть Swift Itunes заголовок с определением протокола, как это (полный заголовокhere):Как установить свойство iTunes ScriptingBridge с использованием протоколов Swift

@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]; 

То же самое в Swift с файлом iTunes.h.


Это работает на Swift 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

 Смежные вопросы

  • Нет связанных вопросов^_^