我正在为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:
错误域= NSCocoaErrorDomain代码= 4099"无法完成操作。 (可可错误4099。)" (与名为com.apple.nsurlstorage-cache的服务的连接无效。)UserInfo = 0x17579030 {NSDebugDescription =名为com.apple.nsurlstorage-cache的服务连接无效。}; { NSDebugDescription ="与名为com.apple.nsurlstorage-cache的服务的连接无效。&#34 ;;
我似乎能够再次正常工作的唯一方法是重置手机上的内容和设置。如果有人能指出我为什么会发生这种情况的正确方向,我将非常感激。提前谢谢。
答案 0 :(得分:7)
这是因为设备不允许键盘使用互联网。
要解决此问题,请首先检查键盘扩展名的Info.plist是否为“RequestsOpenAccess”键的值为“YES”。
然后,在设备上安装您的应用后,转到设置 - >一般 - >键盘 - >键盘 - > ,并打开“允许完全访问”按钮。
答案 1 :(得分:5)
我也有这个问题。当我为我的应用程序编写小部件时,小部件可以使用网络。然后我找到了如何允许使用网络。
只需选择你的目标(键盘) - >能力 - >启用App Sandbox - >检查网络。传入连接(服务器)传出连接(客户端)
答案 2 :(得分:0)
我也有这个问题。当我为我的应用程序编写小部件时,小部件可以使用网络。然后我找到了如何允许使用网络。
只需选择你的目标(键盘) - >能力 - >启用App Sandbox - >检查网络。 传入连接(服务器) 外出贿赂(客户)
抱歉^ _ ^,现在我无法上传图片(因为我刚刚注册)。
答案 3 :(得分:0)
我找到了避免这个问题的方法。
要解决此问题,请在启动测试之前添加环境变量,如下所示:
XPC_SIMULATOR_LAUNCHD_NAME = “com.apple.CoreSimulator.SimDevice.04042E78-E743-4376-94E9-31842D4770B6.launchd_sim”
但是, 04042E78-E743-4376-94E9-31842D4770B6
取决于每个环境。所以它不能被硬编码。我正在寻找一种从项目设置中读取值的方法。