服务名为com.apple.nsurlstorage-cache的连接已失效。

10

我正在为iOS8创建自定义键盘,但是在处理NSURLConnection的一些问题时遇到了困难。

我正在像这样使用sendAsynchronousRequest:方法:

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        NSLog(@"recieved asynchronous response");

        if (!connectionError) {
            [self connection:nil didReceiveData:data];
            [self connectionDidFinishLoading:nil];
        }
        else{
            NSLog(@"connection failed - %@", connectionError);
        }
    }];

这似乎在一段时间内(1-2天)都能正常工作,我能正确接收数据。但在此之后,我开始看到以下错误信息:

 ***cachedResponseForRequest:key:handler failed: 

Error Domain=NSCocoaErrorDomain Code=4099 "操作无法完成。(Cocoa错误 4099。)" (连接到名为com.apple.nsurlstorage-cache的服务已失效。) UserInfo=0x17579030 {NSDebugDescription=连接到名为com.apple.nsurlstorage-cache的服务已失效。}; { NSDebugDescription = "连接到名为com.apple.nsurlstorage-cache的服务已失效。";}

我似乎唯一能够使事情重新正常工作的方法是重置手机上的内容和设置。如果有人能指引我为什么会发生这种情况,我将非常感激。谢谢提前。


只是关闭完全访问权限,然后再重新打开可以帮助解决问题;但这并不是真正的解决方案。 - Alexey Kozhevnikov
请考虑此解决方案:https://dev59.com/NV8d5IYBdhLWcg3wchyi - Soferio
4个回答

7
这是因为设备不允许您的键盘使用互联网。要解决此问题,请首先检查您的键盘扩展的Info.plist文件中是否将“RequestsOpenAccess”键的值设置为“YES”。然后,在将应用程序安装到设备上后,转到“设置”->“通用”->“键盘”->“键盘”,并打开“允许完全访问”按钮。

这并不是问题,因为他提到了“这似乎在一段时间内(1-2天)都能正常工作,我可以正确地接收数据。”,所以他已经给出了这个许可。 - Alexey Kozhevnikov
然后可能他在模拟器中删除了应用程序,因此不得不再次授予权限 :s - Drico
1
这对我很有帮助。请注意,RequestsOpenAccess 嵌套在 NSExtensionAttributes 字典中(该字典本身位于 NSExtension 中)。 - Max Chuquimia

6

我也遇到了这个问题。当我为我的应用程序编写小部件时,小部件可以使用网络。然后我发现了如何允许使用网络。

只需选择您的目标(键盘) -> 能力 -> 打开应用程序沙箱 -> 勾选网络。即可进行传入连接(服务器)和传出连接(客户端)。


0

我也遇到了这个问题。当我为我的应用程序编写小部件时,小部件可以使用网络。然后我找到了如何允许使用网络的方法。

只需选择您的目标(键盘) ->功能 ->打开应用程序沙箱 ->检查网络。 传入连接(服务器) 传出连接(客户端)

抱歉^_^,现在我无法上传图片(因为我刚刚注册)。


0
我已经找到了避免这个问题的方法。
为了解决这个问题,在启动测试之前加入一个环境变量,如下所示:

XPC_SIMULATOR_LAUNCHD_NAME="com.apple.CoreSimulator.SimDevice.04042E78-E743-4376-94E9-31842D4770B6.launchd_sim"

然而,04042E78-E743-4376-94E9-31842D4770B6 取决于每个环境。因此它不能被硬编码。我正在寻找一种从项目设置中读取该值的方法。


有趣,你能提供更多关于这个的细节吗?我还没有找到关于XPC_SIMULATOR_LAUNCHD_NAME的很多文档。 - natevw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接