Ios 尝试使用Watch OS 2发送图像时出现WCErrorDomain 7013

Ios 尝试使用Watch OS 2发送图像时出现WCErrorDomain 7013,ios,watchkit,apple-watch,Ios,Watchkit,Apple Watch,我正在测试Apple Watch OS 2,并试图将图像从应用程序发送到手表。根据苹果公司的说法,我将使用WCSession transferFile来完成这项工作 使用transferFile:metadata:方法在后台传输文件。如果要发送的不仅仅是简单的值字典,请使用此方法。例如,使用此方法发送图像或基于文件的文档 例如: NSString *string = [[NSBundle mainBundle] pathForResource:@"my_image" ofType:@"png"]

我正在测试Apple Watch OS 2,并试图将图像从应用程序发送到手表。根据苹果公司的说法,我将使用WCSession transferFile来完成这项工作

使用transferFile:metadata:方法在后台传输文件。如果要发送的不仅仅是简单的值字典,请使用此方法。例如,使用此方法发送图像或基于文件的文档

例如:

NSString *string = [[NSBundle mainBundle] pathForResource:@"my_image" ofType:@"png"];
NSURL *path = [NSURL URLWithString:string];

[[WCSession defaultSession] transferFile:path metadata:@{@"meta1":@"meta2"}];
在调试器中看起来一切正常,路径正确,文件可访问(使用NSFileManager检查)且可读

但是,每次尝试时,都会收到对didFinishFileTransfer函数的回调,包括一个错误:

Error Domain=WCErrorDomain Code=7013“操作无法完成。(WCErrorDomain错误7013)”

查找错误:

WCErrorCodeFileAccessDenied 一个错误,指示无法传输文件,因为无法访问该文件。 在watchOS 2.0及更高版本中提供

发送功能似乎无法访问该文件?我尝试过将文件重新保存到另一个目录等,但似乎没有任何效果


有人有主意吗?

我设法解决了这个问题

这是因为我的路径不是以文件开头的://

以下代码工作得很好:

NSString *string = [[NSBundle mainBundle] pathForResource:@"my_image" ofType:@"png"];
string = [NSString stringWithFormat:@"file://%@", string];    
NSURL *path = [NSURL URLWithString:string];

[[WCSession defaultSession] transferFile:path metadata:@{@"meta1":@"meta2"}];

因此,它对路径非常挑剔。

您创建的URL不是文件URL。尝试:

NSURL *path = [NSURL fileURLWithPath:string];