Ich habe App-Gruppen für meine App und ihre iMessage-Erweiterung aktiviert, sodass ich Daten zwischen beiden teilen kann. Ich habe NSUserDefaults Synchronisation in beiden Codebasen implementiert. Ich habe jedoch keine gute Möglichkeit gefunden, die Synchronisation zu testen.Testen der NSUserDefaults-Synchronisierung über App-Gruppen hinweg im Simulator
In eines des Viewcontrollers für meinen Haupt-App habe ich hinzugefügt, um diese:
var defaults = NSUserDefaults(suiteName: "group.com.myAppGroup")
defaults?.setObject(movieTitles, forKey: "movieTitles")
defaults?.synchronize()
print("synchronizing movieTitles as \(movieTitles)")
In der iMessage Erweiterung habe ich habe dieses Bild:
var defaults = NSUserDefaults(suiteName: "group.com.myAppGroup")
defaults?.synchronize()
// Check for null value before setting
if let movieTitles = defaults!.stringForKey("movieTitles") {
print("synchronized movieTitles from \(movieTitles)")
}
else {
print("Cannot synchronize movieTitles")
}
Wenn ich laufe die App Im Simulator kann ich in der Konsole sehen, dass die Synchronisierung stattfindet. Wenn ich die Erweiterung in Simulator ausführen, kann ich in der Konsole sehen, dass es versucht zu synchronisieren (und fehlgeschlagen, weil die App nicht ausgeführt wird, so gibt es nichts zu synchronisieren). Jedes Mal, wenn ich versuche, beide Ziele gleichzeitig in Simulator zu laufen, bekomme ich diesen Absturz für die iMessage-Erweiterung:
libsystem_kernel.dylib`mach_msg_trap:
0x109d2b380 <+0>: movq %rcx, %r10
0x109d2b383 <+3>: movl $0x100001f, %eax ; imm = 0x100001F
0x109d2b388 <+8>: syscall
-> 0x109d2b38a <+10>: retq
0x109d2b38b <+11>: nop
Ich bin nicht kompetent genug, um das Debuggen zu wissen, was das bedeutet. Die Konsole zeigt (lldb)
auch in der letzten Zeile.
Jede Hilfe wird geschätzt. Wie kann ich sonst meinen Synchronisationscode testen?