Configurando o plano de fundo da área de trabalho no OSX usando o Swift 2

Após uma introdução ao Javascript, estou tentando abordar a programação OSX / iOS, criando algumas ferramentas simples para coçar minhas próprias coceiras.

No entanto, desde o salto eu bati em um obstáculo.

Encontrei dois exemplos que deveriam funcionar.

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

Aqui está o segundo:

#!/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!")
  }
}

Isso não funcionou no XCode 7 beta 3.

Na esperança de reduzir ao essencial, cheguei a:

#!/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!")
}

E salvo como o arquivowallpaper.swift.

Na execução, o erro é:

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

E agora estou completamente preso ... tentei me referir aNSWorkspace eNSScreen documentação, além de percorrer o playground, mas está além das minhas habilidades atuais.

A remoção do argumento extra sobre o qual reclama (erro: nil) simplesmente gera um erro diferente:

./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 )

Onde o código está falhando e como posso entender como fazê-lo funcionar corretamente?

questionAnswers(2)

yourAnswerToTheQuestion