gpt4 book ai didi

ios - WatchConnectivity 文件传输不起作用

转载 作者:行者123 更新时间:2023-12-04 22:13:30 25 4
gpt4 key购买 nike

我正在使用 WatchConnectivity 将图像从 iOS 传输到 Watch OS。在模拟器中调试时遇到问题

如我在(发件人端,即 iOS)中所见,文件已成功传输

public func session(session: WCSession, didFinishFileTransfer fileTransfer: WCSessionFileTransfer, error: NSError?)

现在我从 XCode 停止 iOS 模拟器,将目标更改为 Watch App,Ctrl+Run Watch App(只运行,不构建)。下面的方法被调用。

public func session(session: WCSession, didReceiveFile file: WCSessionFile) 

我终于做到了

NSFileManager.defaultManager().moveItemAtURL(file.fileURL, toURL: destinationFileURL)

这个调用抛出是因为 file.fileURL 没有文件(我也在我的 MAC 中检查过)。

文件.fileURL.path!是这样的

/Users/<user name>/Library/Developer/CoreSimulator/Devices/DAD8E150-BAA7-43E0-BBDD-58FB0AA74E80/data/Containers/Data/PluginKitPlugin/2CB3D46B-DDB5-480C-ACF4-E529EFBA2657/Documents/Inbox/com.apple.watchconnectivity/979DC929-E1BA-4C24-8140-462EC0B0655C/Files/EC57EBB8-827E-487E-8F5A-A07BE80B3269/image

有什么线索吗?

  • 实际上,我正在循环传输 15-20 张图像。
  • 有时在不调试的时候我注意到很少有图像(不是全部)显示在 watch 模拟器中(也在实际 watch 中)。我不知道是什么发生在 WC 上。
  • 传输用户信息字典没有问题。

最佳答案

我发现了问题。我正在将一些代码分派(dispatch)到主线程,文件移动代码也在其中。 WC 框架在此方法结束后立即清理文件,因此必须在此函数返回之前移动文件。我将该代码移到 performInMainThread block 之外,一切正常。

public func session(session: WCSession, didReceiveFile file: WCSessionFile) 
{
// Move file here
performInMainThread { () -> Void in
// Not here
}
}

关于ios - WatchConnectivity 文件传输不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32828931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com