2016-06-23 28 views
3

Ich möchte die Bewertung eines Titels in Swift 2.3/3 mithilfe des iTunes ScriptingBridge-Frameworks festlegen. Ich habe den Swift iTunes Header mit der Protokolldefinition, da dies (full Headerhere):So legen Sie eine Eigenschaft von iTunes ScriptingBridge mithilfe der Swift-Protokolle fest

@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 {} 

Aber wenn ich versuche, die Bewertung zu setzen:

var iTunesApp = SBApplication(bundleIdentifier: "com.apple.iTunes") as! iTunesApplication 
var currentTrack = iTunesApp.currentTrack 
currentTrack.rating = 10 

Xcode Compiler gibt mir diese Fehler:

Cannot assign to property: 'currentTrack' is inmutable 

Wie mache ich es veränderbar? Ich weiß, dass dieser Code in Objective-C funktioniert, aber ich kann es nicht in Swift arbeiten lassen und es funktioniert nicht mit dem Objective-C Header und einem Objective-C Bridging Header.

Antwort

2

Ich verwende die setRating Methode im Objective-C Code, ich kann die rating Eigenschaft nicht verwenden, um die Bewertung festzulegen.

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

Same in Swift mit der iTunes.h Datei.


Dies funktioniert auf Swift v2.2:

  • In Ihrem "iTunes.swift" Datei, müssen Sie die setRating Funktion
  • @objc optional var rating: Int {get}  
    @objc optional func setRating(_: Int) 
    

hinzufügen
  • Der Swift Code:

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

Oh, perfekt. Vielen Dank! – pvieito