2014-09-11 10 views
9

Ich erstelle eine benutzerdefinierte Tastatur für iOS8, und ich habe eine harte Zeit einige Probleme mit NSURLConnection herauszufinden.Die Verbindung zum Dienst namens com.apple.nsurstorage-cache wurde ungültig

Ich bin mit dem sendAsynchronousRequest: Methode wie folgt:

[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); 
     } 
    }]; 

Dies alles richtig für einen bestimmten Zeitraum zu funktionieren scheint (1-2 Tage), und ich kann korrekt Daten empfangen. Nach dieser Zeit beginnen, da ich die folgende Fehlermeldung: „Der Vorgang konnte nicht abgeschlossen werden (Cocoa Fehler 4099.)“

***cachedResponseForRequest:key:handler failed: 

Fehler Domain = NSCocoaErrorDomain-Code = 4099 (Die Verbindung namens com zu bedienen. apple.nsurstorage-cache wurde ungültig gemacht.) UserInfo = 0x17579030 {NSDebugDescription = Die Verbindung zum Service namens com.apple.nsurstorage-cache wurde ungültig gemacht.}; { NSDebugDescription = "Die Verbindung zum Service namens com.apple.nsurstorage-cache wurde ungültig gemacht.";

Die einzige Möglichkeit, die Dinge wieder korrekt funktionieren zu lassen, ist das Zurücksetzen des Inhalts und der Einstellungen am Telefon. Wenn mir jemand in die richtige Richtung zeigen könnte, warum dies geschieht, wäre ich sehr dankbar. Danke im Voraus.

+0

nur Vollzugriff deaktivieren und dann wieder drehen hilft; aber es ist nicht wirklich eine Lösung –

+0

Betrachten Sie diese Lösung: http://stackoverflow.com/questions/26830648/couldn-t-communicate-with-a-helper-application-on--10-10 – Soferio

Antwort

7

Dies tritt auf, weil das Gerät der Tastatur die Verwendung des Internets nicht zulässt.

Um dies zu beheben, überprüfen Sie zuerst, ob die Info.plist Ihrer Tastaturerweiterung den Wert "YES" für den Schlüssel "RequestsOpenAccess" hat.

Nachdem Sie Ihre App auf einem Gerät installiert haben, gehen Sie zu Einstellungen -> Allgemein -> Tastatur -> Tastaturen -> und aktivieren Sie die Schaltfläche "Vollzugriff zulassen".

+0

Es ist nicht der Fall, denn er erwähnt, dass "Dies alles scheint für eine gewisse Zeit (1-2 Tage) korrekt zu funktionieren, und ich kann Daten richtig empfangen.", also gab er diese Erlaubnis bereits. –

+0

Dann hat er vielleicht die App im Simulator gelöscht und musste diese Erlaubnis noch einmal geben: s – Drico

+1

Das hat mir geholfen. Beachten Sie, dass das 'RequestsOpenAccess' in das' NSExtensionAttributes'-Dictionary geschachtelt ist (das selbst mit 'NSExtension' ist). –

0

Ich hatte auch dieses Problem. Wenn ich ein Widget für meine App schreibe, kann das Widget das Netzwerk verwenden. Dann habe ich herausgefunden, wie man das Netzwerk benutzen kann.

Wählen Sie einfach Ihr Ziel (Tastatur) -> Funktionen -> App Sandbox aktivieren -> Netzwerk überprüfen. Eingehende Verbindungen (Server) Ausgehende Zusammenfassungen (Client)

Tut mir leid^_ ^, jetzt kann ich kein Bild hochladen (weil ich gerade angemeldet habe).

5

Ich hatte auch dieses Problem. Wenn ich ein Widget für meine App schreibe, kann das Widget das Netzwerk verwenden. Dann habe ich herausgefunden, wie man das Netzwerk benutzen kann.

Wählen Sie einfach Ihr Ziel (Tastatur) -> Funktionen -> App Sandbox aktivieren -> Netzwerk überprüfen. Eingehende Verbindungen (Server) Ausgehende Zusammenführungen (Client)

0

Ich habe den Weg gefunden, um das Problem zu vermeiden.

Um das Problem zu lösen, eine Umgebungsvariable hinzufügen, bevor Tests starten wie folgt:

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

Die 04042E78-E743-4376-94E9-31842D4770B6 hängt jedoch von jeder Umgebung ab. Es kann also nicht hart codiert werden. Ich suche nach einer Möglichkeit, den Wert aus den Projekteinstellungen zu lesen.

+0

Interessant, können Sie mehr Details darüber anbieten, was das tut? Ich konnte bisher noch nicht viel Dokumentation für XPC_SIMULATOR_LAUNCHD_NAME finden. – natevw

Verwandte Themen