2016-09-01 2 views
1

ich in Xcode 7.3, dass (nach dem Passieren error: NSError als Argument) arbeitete wie so eine switch-Anweisung hatte:Nach 6 bis 8 Xcode Beta aktualisieren, verloren CKErrorCode und .rawValue aus assoziierten Aufzählungen

if let code:CKErrorCode = CKErrorCode(rawValue: error.code) { 
    switch code { 
    case .NotAuthenticated: etc... 
    } 
} 

Nach der Migration auf Swift 3.0 in Xcode 8 Beta 6, habe ich Fehler bekommen, dass CKErrorCode nicht erkannt wird. Ich bin Wolke noch importieren, und die Migration klein geschrieben meine Aufzählungen und ich habe versucht, es zu ändern, wie so:

switch error.code { 
case .notAuthenticated.rawValue: etc... 
} 

aber das scheint auch auf Fehler (die Beta scheint Buggy auf meinem System so den Fehler zu sein verschwinden und wieder auftauchen, so ist es schwer zu sagen, wie ich jetzt Code und es kann nur mein System sein, aber sie bestehen, wenn ich kompiliere). Ich habe https://swift.org/migration-guide/#known-migration-issues und https://swift.org/migration-guide/ gescannt, habe aber noch nichts gefunden und wenn ich Google CKErrorCode google, scheint die Dokumentation (von der ich annahm, dass sie Swift 3 ignoriert, seit es in der Betaversion ist) meine frühere Syntax koscher lautet.

Kann mir da jemand in die richtige Richtung zeigen? Haben Enums .rawValue verloren? Enums schien sich verändert zu haben, aber ich habe Schwierigkeiten, eine Dokumentation darüber zu finden, was ich tun sollte. Gibt es eine Alternative zu CKErrorCode, die diese Enum-Fälle erkennt? Bitte sagen Sie mir nicht Cloud-Kit-Fehlerbehandlung dramatischer als das geändert :) Vielen Dank im Voraus.

+0

Sie müssen nur von Swift 3 Fehler zu gieße NSError –

+0

Mein Fehler wird als NSError übergeben und wenn ich Option 'klicken error' es beschrieben ist, als' lass Fehler: NSError' ... meinst du ich muss von NSError zu Swift 3 Error (ich bin irgendwie verwirrt, wie die Überbrückung funktioniert um ehrlich zu sein). (Fehler als! NSError) .code warnt, dass ich von NSError auf NSError umwandle –

+0

Ist auch CKErrorCode weg, oder muss ich etwas über meine Konfiguration beheben? –

Antwort

1

Umstellung auf CKError von NSError wie unten dargestellt:

let nsError: NSError = NSError() // NSError variable. 

let cError = CKError(_nsError: nsError) 

let cErrorCode = cError.code 
+1

Sie könnten einige Kommentare hinzufügen, um diese Nur-Code-Antwort zu erklären. –

Verwandte Themen