我正在使用WatchConnectivity将图像从iOS传输到Watch OS.在模拟器中调试时我遇到了问题
正如我所见(发送方即iOS),文件传输成功
public func session(session: WCSession, didFinishFileTransfer fileTransfer: WCSessionFileTransfer, error: NSError?)
Run Code Online (Sandbox Code Playgroud)
现在从XCode我停止iOS模拟器,将目标更改为Watch App,Ctrl + Run Watch App(刚运行,无构建).调用以下方法.
public func session(session: WCSession, didReceiveFile file: WCSessionFile)
Run Code Online (Sandbox Code Playgroud)
我终于做到了
NSFileManager.defaultManager().moveItemAtURL(file.fileURL, toURL: destinationFileURL)
Run Code Online (Sandbox Code Playgroud)
此调用抛出因为file.fileURL上没有文件(我也在我的MAC中检查过).
file.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
Run Code Online (Sandbox Code Playgroud)
有线索吗?
我发现了这个问题.我正在向主线程发送一些代码,文件移动代码也在其中.WC框架在此方法结束后立即清理文件,因此必须在此函数返回之前移动文件.我将该代码移到performInMainThread块之外,一切都像魅力一样.
public func session(session: WCSession, didReceiveFile file: WCSessionFile)
{
// Move file here
performInMainThread { () -> Void in
// Not here
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1621 次 |
| 最近记录: |