AppleWatch – "bash de insert nil" al llamar a WKInterfaceDevice addCachedImage

Llamar a WKInterfaceDevice addCachedImage (_: name 🙂 para enviar una image desde mi aplicación de iPhone al Apple Watch (donde la extensión puede decirle a una vista de la image que se muestre) se bloquea. La exception es esta:

2015-06-09 20:47:57.079 TimeInterval[20195:5186462] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderArray initWithObjects:count:]: attempt to insert nil object from objects[3]' 

Diversas búsquedas de Google y StackOverflow muestran que esto tiene que ver con el uso de un acceso directo para crear un NSDictionary que no permite pasar en nil . Sin embargo, mi código no está haciendo un dictionary en absoluto. Además, cuando el depurador se rompe (breakpoint en excepciones) verifico que el UIImage y el nombre de NSString que estoy pasando sean definitivamente no nulos.

¿Alguien más ha visto esto? ¿Alguna idea de por qué sucede o cómo solucionarlo? ¿Alguien realmente ha tenido éxito usando addCachedImage? (Teniendo en count cómo es AppleWatch, quién sabe!)

Mi trozo de código, en caso de que ayude:

 func application(application: UIApplication, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]?, reply: (([NSObject : AnyObject]!) -> Void)!) { if let info = userInfo { NSLog("watch kit request: %@", info) if let element = info["element"] as? String { //Request to render an element if element == "timer" { let timerView = NPProgressLabel(size: CGSizeMake(48, 48)) timerView.text = info["value"] as! String timerView.progressPercent = (info["progress"] as! NSNumber).floatValue timerView.render() let device = WKInterfaceDevice.currentDevice() var success = false if let image = timerView.currentImage { success = device.addCachedImage(image, name: timerView.currentImageName()) // <------- crashing here ---------- } else { NSLog("no image"); } if !success { NSLog("failed") } else { NSLog("addCachedImage success") } reply(["imageName": timerView.currentImageName()]) } else { reply(["error": "Unknown element"]) } return } } reply(["error": "Bad request"]) } 

El error exacto que obtengo puede ser un error de Apple, pero creo que la respuesta a mi pregunta es que WKInterfaceDevice's addCachedImage no debería llamarse desde la aplicación de iPhone, sino más bien desde la extensión de WatchKit. Entre la aplicación de iPhone y la Extensión WatchKit tengo que usar un contenedor compartido para save y luego cargar la image, luego la extensión puede llamar a addCachedImage.