Revision: 30081
          http://sourceforge.net/p/bibdesk/svn/30081
Author:   hofman
Date:     2026-02-28 16:48:35 +0000 (Sat, 28 Feb 2026)
Log Message:
-----------
Make arguments for local error class factories nonnull. Add convenience one 
with recovery suggestion.

Modified Paths:
--------------
    trunk/bibdesk/BDSKBibTeXParser.m
    trunk/bibdesk/BDSKBookmark.m
    trunk/bibdesk/BDSKDocumentController.m
    trunk/bibdesk/BDSKEditor.m
    trunk/bibdesk/BDSKSciFinderParser.m
    trunk/bibdesk/BDSKScriptGroup.m
    trunk/bibdesk/BDSKServerInfo.m
    trunk/bibdesk/BDSKStringParser.m
    trunk/bibdesk/BibDocument.m
    trunk/bibdesk/BibItem.m
    trunk/bibdesk/NSError_BDSKExtensions.h
    trunk/bibdesk/NSError_BDSKExtensions.m

Modified: trunk/bibdesk/BDSKBibTeXParser.m
===================================================================
--- trunk/bibdesk/BDSKBibTeXParser.m    2026-02-27 22:37:18 UTC (rev 30080)
+++ trunk/bibdesk/BDSKBibTeXParser.m    2026-02-28 16:48:35 UTC (rev 30081)
@@ -291,17 +291,13 @@
             error = [NSError localErrorWithCode:kBDSKBibTeXParserFailed 
localizedDescription:NSLocalizedString(@"Unable to parse string as BibTeX", 
@"Error description") underlyingError:error];
         // If no critical errors, warn about ignoring macros or frontmatter; 
callers can ignore this by passing a valid NSMutableString for frontmatter (or 
ignoring the partial data flag).  Mainly relevant for paste/drag on the 
document.
         } else if (hadCircularMacros) {
-            error = [NSError 
mutableLocalErrorWithCode:kBDSKParserIgnoredFrontMatter 
localizedDescription:NSLocalizedString(@"Macros ignored while parsing BibTeX", 
@"")];
-            [error setValue:NSLocalizedString(@"Circular macro ignored.", 
@"Error description") forKey:NSLocalizedRecoverySuggestionErrorKey];
+            error = [NSError localErrorWithCode:kBDSKParserIgnoredFrontMatter 
localizedDescription:NSLocalizedString(@"Macros ignored while parsing BibTeX", 
@"") localizedRecoverySuggestion:NSLocalizedString(@"Circular macro ignored.", 
@"Error description")];
         } else if (ignoredMacros && ignoredFrontmatter) {
-            error = [NSError 
mutableLocalErrorWithCode:kBDSKParserIgnoredFrontMatter 
localizedDescription:NSLocalizedString(@"Macros and front matter ignored while 
parsing BibTeX", @"")];
-            [error setValue:NSLocalizedString(@"Front matter (preamble and 
comments) from pasted data should be added via a text editor, and macros should 
be added via the macro editor (cmd-shift-M)", @"") 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+            error = [NSError localErrorWithCode:kBDSKParserIgnoredFrontMatter 
localizedDescription:NSLocalizedString(@"Macros and front matter ignored while 
parsing BibTeX", @"") localizedRecoverySuggestion:NSLocalizedString(@"Front 
matter (preamble and comments) from pasted data should be added via a text 
editor, and macros should be added via the macro editor (cmd-shift-M)", @"")];
         } else if (ignoredMacros) {
-            error = [NSError 
mutableLocalErrorWithCode:kBDSKParserIgnoredFrontMatter 
localizedDescription:NSLocalizedString(@"Macros ignored while parsing BibTeX", 
@"")];
-            [error setValue:NSLocalizedString(@"Macros must be added via the 
macro editor (cmd-shift-M)", @"") forKey:NSLocalizedRecoverySuggestionErrorKey];
+            error = [NSError localErrorWithCode:kBDSKParserIgnoredFrontMatter 
localizedDescription:NSLocalizedString(@"Macros ignored while parsing BibTeX", 
@"") localizedRecoverySuggestion:NSLocalizedString(@"Macros must be added via 
the macro editor (cmd-shift-M)", @"")];
         } else if (ignoredFrontmatter) {
-            error = [NSError 
mutableLocalErrorWithCode:kBDSKParserIgnoredFrontMatter 
localizedDescription:NSLocalizedString(@"Front matter ignored while parsing 
BibTeX", @"")];
-            [error setValue:NSLocalizedString(@"Front matter (preamble and 
comments) from pasted data should be added via a text editor", @"") 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+            error = [NSError localErrorWithCode:kBDSKParserIgnoredFrontMatter 
localizedDescription:NSLocalizedString(@"Front matter ignored while parsing 
BibTeX", @"") localizedRecoverySuggestion:NSLocalizedString(@"Front matter 
(preamble and comments) from pasted data should be added via a text editor", 
@"")];
         }
         *outError = error;
     }

Modified: trunk/bibdesk/BDSKBookmark.m
===================================================================
--- trunk/bibdesk/BDSKBookmark.m        2026-02-27 22:37:18 UTC (rev 30080)
+++ trunk/bibdesk/BDSKBookmark.m        2026-02-28 16:48:35 UTC (rev 30081)
@@ -317,8 +317,7 @@
     if ([*value length] && [NSURL URLWithString:*value])
         return YES;
     if (error) {
-        *error = [NSError mutableLocalErrorWithCode:kBDSKUnknownError 
localizedDescription:NSLocalizedString(@"Invalid URL", @"Message in alert 
dialog when setting an invalid URL")];
-        [*error setValue:[NSString stringWithFormat:NSLocalizedString(@"\"%@\" 
is not a valid URL.", @"Informative text in alert dialog"), *value] 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+        *error = [NSError localErrorWithCode:kBDSKUnknownError 
localizedDescription:NSLocalizedString(@"Invalid URL", @"Message in alert 
dialog when setting an invalid URL") localizedRecoverySuggestion:[NSString 
stringWithFormat:NSLocalizedString(@"\"%@\" is not a valid URL.", @"Informative 
text in alert dialog"), *value]];
     }
     return NO;
 }

Modified: trunk/bibdesk/BDSKDocumentController.m
===================================================================
--- trunk/bibdesk/BDSKDocumentController.m      2026-02-27 22:37:18 UTC (rev 
30080)
+++ trunk/bibdesk/BDSKDocumentController.m      2026-02-28 16:48:35 UTC (rev 
30081)
@@ -314,8 +314,7 @@
                 filteredString = [[NSString alloc] initWithData:filteredData 
encoding:encoding];
             }
             if ([NSString isEmptyString:filteredString] && outError) {
-                *outError = [NSError 
mutableLocalErrorWithCode:kBDSKDocumentOpenError 
localizedDescription:NSLocalizedString(@"Unable To Open With Filter", @"Error 
description")];
-                [*outError setValue:NSLocalizedString(@"Unable to read the 
file correctly. Please ensure that the shell command specified for filtering is 
correct by testing it in Terminal.app.", @"Error description") 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+                *outError = [NSError localErrorWithCode:kBDSKDocumentOpenError 
localizedDescription:NSLocalizedString(@"Unable To Open With Filter", @"Error 
description") localizedRecoverySuggestion:NSLocalizedString(@"Unable to read 
the file correctly. Please ensure that the shell command specified for 
filtering is correct by testing it in Terminal.app.", @"Error description")];
             }
         }
         if ([NSString isEmptyString:filteredString] == NO) {

Modified: trunk/bibdesk/BDSKEditor.m
===================================================================
--- trunk/bibdesk/BDSKEditor.m  2026-02-27 22:37:18 UTC (rev 30080)
+++ trunk/bibdesk/BDSKEditor.m  2026-02-28 16:48:35 UTC (rev 30081)
@@ -1985,13 +1985,12 @@
     
     if (nil == errorString) {
         // shouldn't get here
-        err = [NSError mutableLocalErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Value", @"Message in alert 
dialog when entering an invalid value")];
+        err = [NSError localErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Value", @"Message in alert 
dialog when entering an invalid value")];
         NSLog(@"%@:%d formatter failed for unknown reason", 
__FILENAMEASNSSTRING__, __LINE__);
     } else if (control == citeKeyField) {
         // !!! may have to revisit this with strict invalid keys?
         // this may occur if the cite key formatter fails to format
-        err = [NSError mutableLocalErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Cite Key", @"Message in alert 
dialog when enetring invalid cite key")];
-        [err setValue:errorString 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+        err = [NSError localErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Cite Key", @"Message in alert 
dialog when enetring invalid cite key") 
localizedRecoverySuggestion:errorString];
         
     } else {
         
@@ -2001,19 +2000,15 @@
             NSString *fieldName = [fields objectAtIndex:row];
             if ([fieldName isEqualToString:BDSKCrossrefString]) {
                 // this may occur if the cite key formatter fails to format
-                err = [NSError mutableLocalErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Crossref Key", @"Message in 
alert dialog when entering invalid Crossref key")];
-                [err setValue:errorString 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+                err = [NSError localErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Crossref Key", @"Message in 
alert dialog when entering invalid Crossref key") 
localizedRecoverySuggestion:errorString];
             } else if ([fieldName isCitationField]) {
                 // this may occur if the citation formatter fails to format
-                err = [NSError mutableLocalErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Citation Key", @"Message in 
alert dialog when entering invalid Crossref key")];
-                [err setValue:errorString 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+                err = [NSError localErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Citation Key", @"Message in 
alert dialog when entering invalid Crossref key") 
localizedRecoverySuggestion:errorString];
             } else if (NO == [tableCellFormatter editAsComplexString]) {
                 // this is a simple string, an error means that there are 
unbalanced braces
-                err = [NSError mutableLocalErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Value", @"Message in alert 
dialog when entering an invalid value")];
-                [err setValue:NSLocalizedString(@"The value you entered 
contains unbalanced braces and cannot be saved.", @"Informative text in alert 
dialog") forKey:NSLocalizedRecoverySuggestionErrorKey];
+                err = [NSError localErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Value", @"Message in alert 
dialog when entering an invalid value") 
localizedRecoverySuggestion:NSLocalizedString(@"The value you entered contains 
unbalanced braces and cannot be saved.", @"Informative text in alert dialog")];
             } else {
-                err = [NSError 
mutableLocalErrorWithCode:kBDSKComplexStringError 
localizedDescription:NSLocalizedString(@"Invalid Value", @"Message in alert 
dialog when entering an invalid value")];
-                [err setValue:errorString 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+                err = [NSError localErrorWithCode:kBDSKComplexStringError 
localizedDescription:NSLocalizedString(@"Invalid Value", @"Message in alert 
dialog when entering an invalid value") 
localizedRecoverySuggestion:errorString];
             }
         }
     }
@@ -2072,8 +2067,7 @@
                 else // shouldn't happen
                     message = NSLocalizedString(@"Cannot set this cite key as 
this would lead to a crossreff chain.", @"Informative text in alert dialog");
                 
-                NSError *err = [NSError 
mutableLocalErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Value", @"Message in alert 
dialog when entering an invalid value")];
-                [err setValue:message 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+                NSError *err = [NSError localErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Value", @"Message in alert 
dialog when entering an invalid value") localizedRecoverySuggestion:message];
                 *error = err;
             }
         } else if (editorFlags.allowFragileCharacters == NO) {
@@ -2123,8 +2117,7 @@
                         else if (errorCode == BDSKIsCrossreffedCrossrefError)
                             message = NSLocalizedString(@"Cannot set the 
Crossref field, as the current item is cross referenced.", @"Informative text 
in alert dialog");
                         
-                        NSError *err = [NSError 
mutableLocalErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Crossref Value", @"Message in 
alert dialog when entering an invalid Crossref key")];
-                        [err setValue:message 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+                        NSError *err = [NSError 
localErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Crossref Value", @"Message in 
alert dialog when entering an invalid Crossref key") 
localizedRecoverySuggestion:message];
                         *error = err;
                     }
                 }
@@ -2231,8 +2224,7 @@
     BDSKASSERT(aTextObject == currentEditedView);
     BOOL isValid = [[currentEditedView string] 
isStringTeXQuotingBalancedWithBraces:YES connected:NO];
     if (isValid == NO && error) {
-        NSError *err = [NSError mutableLocalErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Value", @"Message in alert 
dialog when entering an invalid value")];
-        [err setValue:NSLocalizedString(@"The value you entered contains 
unbalanced braces and cannot be saved.", @"Informative text in alert dialog") 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+        NSError *err = [NSError localErrorWithCode:kBDSKFailedToCommit 
localizedDescription:NSLocalizedString(@"Invalid Value", @"Message in alert 
dialog when entering an invalid value") 
localizedRecoverySuggestion:NSLocalizedString(@"The value you entered contains 
unbalanced braces and cannot be saved.", @"Informative text in alert dialog")];
         *error = err;
     }
     return isValid;

Modified: trunk/bibdesk/BDSKSciFinderParser.m
===================================================================
--- trunk/bibdesk/BDSKSciFinderParser.m 2026-02-27 22:37:18 UTC (rev 30080)
+++ trunk/bibdesk/BDSKSciFinderParser.m 2026-02-28 16:48:35 UTC (rev 30081)
@@ -192,8 +192,7 @@
     }
     if (nStart != nStop) {
         if (outError) {
-            *outError = [NSError 
mutableLocalErrorWithCode:kBDSKWebParserFailed 
localizedDescription:NSLocalizedString(@"Unable to parse SciFinder data", 
@"error message for SciFinder")];
-            [*outError setValue:NSLocalizedString(@"Unbalanced START_RECORD 
and END_RECORD tags", @"error message for SciFinder; do not translate 
START_RECORD or END_RECORD") forKey:NSLocalizedRecoverySuggestionErrorKey];
+            *outError = [NSError localErrorWithCode:kBDSKWebParserFailed 
localizedDescription:NSLocalizedString(@"Unable to parse SciFinder data", 
@"error message for SciFinder") 
localizedRecoverySuggestion:NSLocalizedString(@"Unbalanced START_RECORD and 
END_RECORD tags", @"error message for SciFinder; do not translate START_RECORD 
or END_RECORD")];
         }
         return nil;
     }

Modified: trunk/bibdesk/BDSKScriptGroup.m
===================================================================
--- trunk/bibdesk/BDSKScriptGroup.m     2026-02-27 22:37:18 UTC (rev 30080)
+++ trunk/bibdesk/BDSKScriptGroup.m     2026-02-28 16:48:35 UTC (rev 30081)
@@ -367,8 +367,7 @@
             argsArray = [[scriptArguments shellScriptArgumentsArray] copy];
     }
     @catch (id exception) {
-        NSError *error = [NSError mutableLocalErrorWithCode:kBDSKParserFailed 
localizedDescription:NSLocalizedString(@"Error parsing script arguments", 
@"Error description")];
-        [error setValue:[exception reason] 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+        NSError *error = [NSError localErrorWithCode:kBDSKParserFailed 
localizedDescription:NSLocalizedString(@"Error parsing script arguments", 
@"Error description") localizedRecoverySuggestion:[exception reason]];
         [self scriptDidFailWithError:error];
         
         // !!! early return here

Modified: trunk/bibdesk/BDSKServerInfo.m
===================================================================
--- trunk/bibdesk/BDSKServerInfo.m      2026-02-27 22:37:18 UTC (rev 30080)
+++ trunk/bibdesk/BDSKServerInfo.m      2026-02-28 16:48:35 UTC (rev 30081)
@@ -569,8 +569,7 @@
     }
     
     if (NO == isValid && error) {
-        *error = [NSError mutableLocalErrorWithCode:kBDSKUnknownError 
localizedDescription:NSLocalizedString(@"Not a recognized IANA character set 
name", @"error title for setting zoom result encoding")];
-        [*error setValue:NSLocalizedString(@"See 
http://www.iana.org/assignments/character-sets for recognized values.", @"error 
suggestion for setting zoom result encoding") 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+        *error = [NSError localErrorWithCode:kBDSKUnknownError 
localizedDescription:NSLocalizedString(@"Not a recognized IANA character set 
name", @"error title for setting zoom result encoding") 
localizedRecoverySuggestion:NSLocalizedString(@"See 
http://www.iana.org/assignments/character-sets for recognized values.", @"error 
suggestion for setting zoom result encoding")];
     }
     return isValid;
 }

Modified: trunk/bibdesk/BDSKStringParser.m
===================================================================
--- trunk/bibdesk/BDSKStringParser.m    2026-02-27 22:37:18 UTC (rev 30080)
+++ trunk/bibdesk/BDSKStringParser.m    2026-02-28 16:48:35 UTC (rev 30081)
@@ -95,8 +95,7 @@
     Class parserClass = classForType(stringType);
     BDSKASSERT(parserClass == Nil || [parserClass 
conformsToProtocol:@protocol(BDSKStringParser)]);
     if (Nil == parserClass && outError){
-        *outError = [NSError mutableLocalErrorWithCode:kBDSKParserUnsupported 
localizedDescription:NSLocalizedString(@"Unsupported or invalid format", 
@"error when parsing text fails")];
-        [*outError setValue:NSLocalizedString(@"BibDesk was not able to 
determine the syntax of this data.  It may be incorrect or an unsupported type 
of text.", @"error description when parsing text fails") 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+        *outError = [NSError localErrorWithCode:kBDSKParserUnsupported 
localizedDescription:NSLocalizedString(@"Unsupported or invalid format", 
@"error when parsing text fails") 
localizedRecoverySuggestion:NSLocalizedString(@"BibDesk was not able to 
determine the syntax of this data.  It may be incorrect or an unsupported type 
of text.", @"error description when parsing text fails")];
     }
     return [parserClass itemsFromString:string error:outError];
 }

Modified: trunk/bibdesk/BibDocument.m
===================================================================
--- trunk/bibdesk/BibDocument.m 2026-02-27 22:37:18 UTC (rev 30080)
+++ trunk/bibdesk/BibDocument.m 2026-02-28 16:48:35 UTC (rev 30081)
@@ -1082,11 +1082,9 @@
         }else if(type == BDSKStringTypeBibTeX){
             success = [self readFromBibTeXData:data string:string 
fromURL:absoluteURL encoding:encoding error:&error];
         }else if (type == BDSKStringTypeNoKeyBibTeX){
-            error = [NSError mutableLocalErrorWithCode:kBDSKParserFailed 
localizedDescription:NSLocalizedString(@"Unable To Open Document", @"Error 
description")];
-            [error setValue:NSLocalizedString(@"This file appears to contain 
invalid BibTeX because of missing cite keys. Try to open using temporary cite 
keys to fix this.", @"Error informative text") 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+            error = [NSError localErrorWithCode:kBDSKParserFailed 
localizedDescription:NSLocalizedString(@"Unable To Open Document", @"Error 
description") localizedRecoverySuggestion:NSLocalizedString(@"This file appears 
to contain invalid BibTeX because of missing cite keys. Try to open using 
temporary cite keys to fix this.", @"Error informative text")];
         }else if (type == BDSKStringTypeUnknown){
-            error = [NSError mutableLocalErrorWithCode:kBDSKParserFailed 
localizedDescription:NSLocalizedString(@"Unable To Open Document", @"Error 
description")];
-            [error setValue:NSLocalizedString(@"This text file does not 
contain a recognized data type.", @"Error informative text") 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+            error = [NSError localErrorWithCode:kBDSKParserFailed 
localizedDescription:NSLocalizedString(@"Unable To Open Document", @"Error 
description") localizedRecoverySuggestion:NSLocalizedString(@"This text file 
does not contain a recognized data type.", @"Error informative text")];
         }else{
             NSArray *newPubs = [BDSKStringParser itemsFromString:string 
ofType:type error:&error];
             if (newPubs) {
@@ -1095,8 +1093,7 @@
                 [self setFileURL:nil];
                 success = YES;
             } else {
-                error = [NSError mutableLocalErrorWithCode:kBDSKParserFailed 
localizedDescription:NSLocalizedString(@"Unable To Open Document", @"Error 
description")];
-                [error setValue:NSLocalizedString(@"This text file does not 
contain a recognized data type.", @"Error informative text") 
forKey:NSLocalizedRecoverySuggestionErrorKey];
+                error = [NSError localErrorWithCode:kBDSKParserFailed 
localizedDescription:NSLocalizedString(@"Unable To Open Document", @"Error 
description") localizedRecoverySuggestion:NSLocalizedString(@"This text file 
does not contain a recognized data type.", @"Error informative text")];
             }
         }
     }

Modified: trunk/bibdesk/BibItem.m
===================================================================
--- trunk/bibdesk/BibItem.m     2026-02-27 22:37:18 UTC (rev 30080)
+++ trunk/bibdesk/BibItem.m     2026-02-28 16:48:35 UTC (rev 30081)
@@ -1860,8 +1860,7 @@
     
     // btparse apparently runs out of memory and crashes with 98+ fields
     if (isOK && numFields >= 98) {
-        error = [NSError mutableLocalErrorWithCode:kBDSKDocumentSaveError 
localizedDescription:NSLocalizedString(@"Too many fields", @"Error 
description")];
-        [error setValue:[NSString stringWithFormat:NSLocalizedString(@"Too 
many fields for item with cite key \"%@\".", @"Error informative text"), [self 
citeKey]] forKey:NSLocalizedRecoverySuggestionErrorKey];
+        error = [NSError localErrorWithCode:kBDSKDocumentSaveError 
localizedDescription:NSLocalizedString(@"Too many fields", @"Error 
description") localizedRecoverySuggestion:[NSString 
stringWithFormat:NSLocalizedString(@"Too many fields for item with cite key 
\"%@\".", @"Error informative text"), [self citeKey]]];
     }
     
     if(isOK == NO && outError)

Modified: trunk/bibdesk/NSError_BDSKExtensions.h
===================================================================
--- trunk/bibdesk/NSError_BDSKExtensions.h      2026-02-27 22:37:18 UTC (rev 
30080)
+++ trunk/bibdesk/NSError_BDSKExtensions.h      2026-02-28 16:48:35 UTC (rev 
30081)
@@ -78,8 +78,9 @@
 @property (class, nonatomic, readonly) NSString *localErrorDomain;
 
 // returns BibDesk-specific errors that don't allow valueForKey: and 
setValue:forKey: usage
-+ (instancetype)localErrorWithCode:(NSInteger)code 
localizedDescription:(nullable NSString *)description;
-+ (instancetype)localErrorWithCode:(NSInteger)code 
localizedDescription:(nullable NSString *)description underlyingError:(nullable 
NSError *)underlyingError;
++ (instancetype)localErrorWithCode:(NSInteger)code 
localizedDescription:(NSString *)description;
++ (instancetype)localErrorWithCode:(NSInteger)code 
localizedDescription:(NSString *)description underlyingError:(NSError 
*)underlyingError;
++ (instancetype)localErrorWithCode:(NSInteger)code 
localizedDescription:(NSString *)description 
localizedRecoverySuggestion:(NSString *)recoverySuggestion;
 
 // returns BibDesk-specific errors that can allow valueForKey: and 
setValue:forKey: usage
 + (instancetype)mutableErrorWithDomain:(NSString *)domain code:(NSInteger)code 
userInfo:(nullable NSDictionary<NSString *, id> *)dict;

Modified: trunk/bibdesk/NSError_BDSKExtensions.m
===================================================================
--- trunk/bibdesk/NSError_BDSKExtensions.m      2026-02-27 22:37:18 UTC (rev 
30080)
+++ trunk/bibdesk/NSError_BDSKExtensions.m      2026-02-28 16:48:35 UTC (rev 
30081)
@@ -114,16 +114,22 @@
 
 + (instancetype)localErrorWithCode:(NSInteger)code 
localizedDescription:(NSString *)description;
 {
-    NSDictionary *userInfo = [NSDictionary 
dictionaryWithObjectsAndKeys:description, NSLocalizedDescriptionKey, nil];
+    NSDictionary *userInfo = @{NSLocalizedDescriptionKey: description};
     return [[self alloc] initWithDomain:[NSError localErrorDomain] code:code 
userInfo:userInfo];
 }
 
 + (instancetype)localErrorWithCode:(NSInteger)code 
localizedDescription:(NSString *)description underlyingError:(NSError 
*)underlyingError;
 {
-    NSDictionary *userInfo = [NSDictionary 
dictionaryWithObjectsAndKeys:description, NSLocalizedDescriptionKey, 
underlyingError, NSUnderlyingErrorKey, nil];
+    NSDictionary *userInfo = @{NSLocalizedDescriptionKey: description, 
NSUnderlyingErrorKey: underlyingError};
     return [[self alloc] initWithDomain:[NSError localErrorDomain] code:code 
userInfo:userInfo];
 }
 
++ (instancetype)localErrorWithCode:(NSInteger)code 
localizedDescription:(NSString *)description 
localizedRecoverySuggestion:(NSString *)recoverySuggestion;
+{
+    NSDictionary *userInfo = @{NSLocalizedDescriptionKey: description, 
NSLocalizedRecoverySuggestionErrorKey: recoverySuggestion};
+    return [[self alloc] initWithDomain:[NSError localErrorDomain] code:code 
userInfo:userInfo];
+}
+
 + (instancetype)mutableLocalErrorWithCode:(NSInteger)code 
localizedDescription:(NSString *)description;
 {
     return [[BDSKMutableError alloc] initLocalErrorWithCode:code 
localizedDescription:description];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to