はじめに
StoryboardにWKInterfaceImageを配置して、指定したURLの画像を表示します。
コードは以下のとおりです。
InterfaceController.swift
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
@IBOutlet var image: WKInterfaceImage!
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
let url = NSURL(string: "https://YOUR_IMAGE_FILE")!
let data = NSData(contentsOfURL: url)
self.image.setImage(UIImage(data: data!))
}
override func willActivate() {
super.willActivate()
}
override func didDeactivate() {
super.didDeactivate()
}
}
シミュレータで実行すると画像が表示されます。
シミュレータのバージョンはVersion 2.0 (SimulatorApp-621 CoreSimulator-179
です。
実機で実行するとNSDataの箇所でなエラーになります。
実機のバージョンはwatchOS 2.0(13S344)
です。
fatal error: unexpectedly found nil while unwrapping an Optional value
NSURLSessionで書き換える
NSDataのメソッドにバグがあるようです。
watchOS 2 on device doesn't read NSData
NSDataをNSURLSessionで書き換えます。
InterfaceController.swift
import WatchKit
import Foundation
class InterfaceController: WKInterfaceController {
@IBOutlet var image: WKInterfaceImage!
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
let url = NSURL(string: "https://YOUR_IMAGE_FILE")!
let task = NSURLSession.sharedSession().dataTaskWithURL(url, completionHandler: {data, response, error in
self.image.setImage(UIImage(data: data!))
})
task.resume()
}
override func willActivate() {
super.willActivate()
}
override func didDeactivate() {
super.didDeactivate()
}
}
実行するとシミュレータでも実機でも画像が表示されます。