У меня есть эта функция в Watchkit Extension
InterfaceController
...
func createAndSendCSV(data: Array<String>) {
var csvText = "time, data\n"
let fileName = "\(startTime).csv"
let path = NSURL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent(fileName)
for row in data {
csvText += row
}
do {
try csvText.write(to: path!, atomically: true, encoding: String.Encoding.utf8)
WCSession.default.transferFile(path!, metadata: ["time": startTime])
} catch {
print("Failed to create file")
print("\(error)")
}
}
, которая вызывается, когда пользователь останавливает приложение на часах.Я знаю, что функция сработала, потому что я могу добавить оператор print в do catch, показывающий, что она была успешной.затем пытается работать с файлом, который был отправлен.Я не вижу никаких ошибок, но я также не вижу своего тестового сообщения печати.
Я пытаюсь использовать файл CSV для передачи данных, поскольку не могу отправить через sendMessage из-за размера сообщения,Кто-нибудь знает, почему это может не работать?
import UIKit
import WatchConnectivity
class ViewController: UIViewController, WCSessionDelegate {
override func viewDidLoad() {
super.viewDidLoad()
if (WCSession.isSupported()) {
let session = WCSession.default
session.delegate = self
session.activate()
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func session(_ session: WCSession, didReceive file: WCSessionFile) {
DispatchQueue.main.async() {
do {
print("test")
let contents = try String(contentsOf: file.fileURL, encoding: .utf8)
self.sendData(data: contents)
} catch {
print("File Read Error for file \(String(describing: file.metadata))")
}
}
}
func sendData(data: String) {
print(data)
}
// Not used but needs to exist
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
}
func sessionDidBecomeInactive(_ session: WCSession) {
}
func sessionDidDeactivate(_ session: WCSession) {
}
}