2016-04-17 12 views
0

Mein Ziel ist es, ein riesiges Wörterbuch (mit etwa 10 Arrays) von der iOS App zur watchKit App zu senden, aber ich bekomme keine Ausgabe auf dem Ende des watchKits.Senden eines großen Wörterbuchs über sendMessage - WatchKit

Wenn ich eine Zeichenfolge senden, funktioniert das folgende Beispiel fein:

let message = [ "fromParent": "some string" ] 
session.sendMessage(message, replyHandler: { replyDict in }, errorHandler: { error in }) 

aber wenn ich versuche, ein Wörterbuch zu senden, ich bin keine Ausgabe überhaupt bekommen:

let message = [ "fromParent": dictionary ] 
session.sendMessage(message, replyHandler: { replyDict in }, errorHandler: { error in }) 

Diese ist, wie ich die Ausgabe auf das Ende des watchKit ausdrucken:

func session(session: WCSession, didReceiveMessage message: [String: AnyObject], replyHandler: [String: AnyObject] -> Void) { 
guard let parentMessage = message["fromParent"] as? String else { return } 
print(parentMessage) 
} 
+2

Haben Sie versucht, dies in Xcode zu debuggen? Du hättest das 'wie? String würde bedeuten, dass "parentMessage" nicht gedruckt würde. –

+0

@PetahChristian es war dumm von mir, das als nicht zu bemerken? String, aber wie auch immer - ich kann das große Wörterbuch (> 100kb) nicht über sendMessage übertragen (nur relativ kleine) –

Antwort

2

Ich kann nicht übertragen (> 100 kb) das große Wörterbuch über nachrichts (nur relativ kleine)

Der PayloadTooLarge Fehler already mentioned war.

Wenn Sie eine ordnungsgemäße Fehlerbehandlung implementieren, werden Sie feststellen, dass sendMessage fehlschlägt, weil Sie die Menge der Daten überschritten haben, die Sie in einer Nachricht senden konnten.

session.sendMessage(message, replyHandler: nil, errorHandler: { (error) -> Void in 
    print("sendMessage failed with error \(error)") 
}) 

Alternative Ansätze:

Es ist unpraktisch, so große Mengen an Daten zu senden, und setzt den Benutzer zu langen Ladezeiten.

  • Wenn möglich, sollten Sie alle vorinstallierten/statische Daten in den Uhren Bündel bündeln, damit es nicht in erster Linie übertragen werden muss.

  • Wenn Sie keine großen Datenmengen zwischen Telefon und Uhr übertragen müssen, müssen Sie transferFile:metadata: verwenden (dies unterliegt nur den verbleibenden Speicherplatzbeschränkungen auf der Uhr).

Verwandte Themen