2 Stimmen

Bietet Apple lokalisierte Wiederherstellungsoptionen für häufige NSButton-Titel von NSError an?

Bietet Apple lokalisierte Zeichenfolgen für häufige NSButton-Titel an, wie z. B. die Äquivalente zu OK, Abbrechen, Erneut versuchen und Beenden?

Ich versuche, ein benutzerdefiniertes NSError-Objekt aus einem mir von einem anderen Cocoa-Framework übergebenen zu erstellen. Ich möchte das informelle Protokoll NSErrorRecoveryAttempting implementieren, um dem Benutzer die Möglichkeit zu geben, Erneut zu versuchen oder Beenden, wenn ein Fehler auftritt. Zum (kurzen) Beispiel:

NSString *cachesDir = ...;
NSError  *error     = nil;
BOOL     success    = [[NSFileManager defaultManager] createDirectoryAtPath:cachesDir withIntermediateDirectories:NO attributes:nil error:&error];

// Das Verzeichnis konnte nicht erstellt werden.
if (!success)
{
 NSMutableDictionary *errorUserInfoCopy = [[[error userInfo] mutableCopy] autorelease];

 NSArray *recoveryOptions = [NSArray arrayWithObjects:@"Erneut versuchen", @"Beenden", nil];
 [errorUserInfoCopy setObject:recoveryOptions forKey:NSLocalizedRecoveryOptionsErrorKey];

 NSError *newError = [NSError errorWithDomain:[error domain] code:[error code] userInfo:errorUserInfoCopy];
 [NSApp presentError:newError];
}

In Zeile 10, NSArray *recoveryOptions = ..., bietet Apple eine Möglichkeit, lokalisierte Versionen von Erneut versuchen/Beenden (unter anderen gängigen NSButton-Titeln) einfach zu erhalten? Oder muss ich manuell .strings-Dateien befüllen und stattdessen NSLocalizedString() verwenden?

Apple bietet lokalisierte Wiederherstellungsoptionen für nicht angepasste NSError's:

NSArray *recoveryOptions = [anError localizedRecoverySuggestion];

Aber dies fällt normalerweise nur auf ein lokalisiertes "OK" zurück. Es ist nicht für benutzerdefiniertes NSErrorRecoveryAttempting geeignet.

0voto

Dave Punkte 12058

Es scheint, dass Apple das nicht tut.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X