Einstellen des Desktop-Hintergrunds unter OSX mit Swift 2

Nach einer Einführung in Javascript versuche ich, die OSX / iOS-Programmierung in Angriff zu nehmen, indem ich einige einfache Tools erstelle, mit denen ich meine eigenen Probleme lösen kann.

leich nach dem Sprung bin ich auf eine Straßensperre gestoße

ch habe zwei Beispiele gefunden, die funktionieren sollte

https: //github.com/hinderberg/ios-swift-kurs/blob/master/swift-intro/wallpaper.swifhttps: //www.snip2code.com/Snippet/196825/Swift-shell-script-to-randomize-wallpap

Hier ist der zweite:

#!/usr/bin/env xcrun swift

import Foundation
import AppKit
let imagesDir = "/Users/david/Dropbox/Graphics/Wallpaper-HD/"
var err: NSError?

let fs = NSFileManager.defaultManager()
let filenames = fs.contentsOfDirectoryAtPath(imagesDir, error: &err) as [String]?

if let error = err {
  NSLog(error.localizedDescription)
} else {

  let imagenames = filenames!.filter { $0.hasSuffix(".jpg") || $0.hasSuffix("png") }
  let ir = Int(arc4random_uniform(UInt32(imagenames.count)))
  let imgurl = NSURL.fileURLWithPath(imagesDir + imagenames[ir])

  let workspace = NSWorkspace.sharedWorkspace()
  let screen = NSScreen.mainScreen()
  let ok : Bool = workspace.setDesktopImageURL( imgurl!, forScreen: screen!, options: nil, error: nil )

  if ok { 
    println( "New wallpaper: " + imagenames[ir] ) 
  } else { 
    println("Oops!")
  }
}

Dies hat in XCode 7 Beta 3 nicht funktioniert.

m mich auf das Wesentliche zu beschränken, kam ich z

#!/usr/bin/env xcrun swift
import Foundation
import AppKit
let imagesDir = "/Users/josh/Downloads/"
let singleImage = "/Users/josh/Downloads/xlarge.png"


let imgurl = NSURL.fileURLWithPath(singleImage)

let workspace = NSWorkspace.sharedWorkspace()
let screen = NSScreen.mainScreen()
let ok : Bool = workspace.setDesktopImageURL( imgurl, forScreen: screen!, options: nil, error: nil )

if ok {
    print( "New wallpaper set!" )
} else {
    print("Oops!")
}

Und als Datei gespeichertwallpaper.swift.

ei der Ausführung ist der Fehler:

./wallpaper.swift:17:49: error: extra argument 'error' in call
let ok : Bool = workspace.setDesktopImageURL( imgurl, forScreen: screen!, options: nil, error: nil )

Und jetzt stecke ich komplett fest ... Ich habe versucht, mich auf @ zu bezieh NSWorkspace und NSScreen Dokumentation sowie durch Spielplatz laufen, aber es ist jenseits meiner aktuellen Fähigkeiten.

Das Entfernen des zusätzlichen Arguments, über das es sich beschwert (Fehler: Null), gibt einfach einen anderen Fehler aus:

./wallpaper.swift:13:31: error: cannot invoke 'setDesktopImageURL' with an argument list of type '(NSURL, forScreen: NSScreen?, options: nil)'
let ok : Bool = workspace.setDesktopImageURL( imgurl, forScreen: screen, options: nil )

Wo schlägt der Code fehl und wie kann ich verstehen, wie er richtig funktioniert?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage