From 6e0114d2044272f75d44c3ff30b5f063c1694e51 Mon Sep 17 00:00:00 2001 From: "jake.oeding" Date: Fri, 30 Jan 2026 20:02:15 -0500 Subject: [PATCH] make improvements for swift consumers -add nullability annotations -rework some return types to guarantee nonnull --- Sources/DictionaryKit/TTTDictionary.m | 16 +++--- Sources/DictionaryKit/include/TTTDictionary.h | 53 +++++++++---------- 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/Sources/DictionaryKit/TTTDictionary.m b/Sources/DictionaryKit/TTTDictionary.m index 5837e3a..0748aa6 100644 --- a/Sources/DictionaryKit/TTTDictionary.m +++ b/Sources/DictionaryKit/TTTDictionary.m @@ -154,19 +154,21 @@ - (instancetype)initWithDictionaryRef:(DCSDictionaryRef)dictionary { - (NSArray *)entriesForSearchTerm:(NSString *)term { CFRange termRange = DCSGetTermRangeInString(self.dictionary, (__bridge CFStringRef)term, 0); if (termRange.location == kCFNotFound) { - return nil; + return @[]; } term = [term substringWithRange:NSMakeRange(termRange.location, termRange.length)]; NSArray *records = (__bridge_transfer NSArray *)DCSCopyRecordsForSearchString(self.dictionary, (__bridge CFStringRef)term, NULL, NULL); + if ([records count] == 0) { + return @[]; + } + NSMutableArray *mutableEntries = [NSMutableArray arrayWithCapacity:[records count]]; - if (records) { - for (id record in records) { - TTTDictionaryEntry *entry = [[TTTDictionaryEntry alloc] initWithRecordRef:(__bridge CFTypeRef)record dictionaryRef:self.dictionary]; - if (entry) { - [mutableEntries addObject:entry]; - } + for (id record in records) { + TTTDictionaryEntry *entry = [[TTTDictionaryEntry alloc] initWithRecordRef:(__bridge CFTypeRef)record dictionaryRef:self.dictionary]; + if (entry) { + [mutableEntries addObject:entry]; } } diff --git a/Sources/DictionaryKit/include/TTTDictionary.h b/Sources/DictionaryKit/include/TTTDictionary.h index 2cda980..cb8a7f0 100644 --- a/Sources/DictionaryKit/include/TTTDictionary.h +++ b/Sources/DictionaryKit/include/TTTDictionary.h @@ -30,17 +30,17 @@ /** */ -@property (readonly, nonatomic, copy) NSString *headword; +@property (readonly, nonatomic, copy, nullable) NSString *headword; /** */ -@property (readonly, nonatomic, copy) NSString *text; +@property (readonly, nonatomic, copy, nullable) NSString *text; /** */ -@property (readonly, nonatomic, copy) NSString *HTML; +@property (readonly, nonatomic, copy, nullable) NSString *HTML; @end @@ -54,47 +54,46 @@ /** */ -@property (readonly, nonatomic, copy) NSString *name; +@property (readonly, nonatomic, copy, nullable) NSString *name; /** */ -@property (readonly, nonatomic, copy) NSString *shortName; +@property (readonly, nonatomic, copy, nullable) NSString *shortName; /** */ -+ (NSSet *)availableDictionaries; ++ (nonnull NSSet *)availableDictionaries; /** */ -+ (instancetype)dictionaryNamed:(NSString *)name; ++ (nullable instancetype)dictionaryNamed:(nonnull NSString *)name; /** */ -- (NSArray *)entriesForSearchTerm:(NSString *)term; - +- (nonnull NSArray *)entriesForSearchTerm:(nonnull NSString *)term; @end /// @name Constants -extern NSString * const DCSAppleDictionaryName; -extern NSString * const DCSDutchDictionaryName; -extern NSString * const DCSFrenchDictionaryName; -extern NSString * const DCSGermanDictionaryName; -extern NSString * const DCSItalianDictionaryName; -extern NSString * const DCSJapaneseDictionaryName; -extern NSString * const DCSJapaneseSupaDaijirinDictionaryName; -extern NSString * const DCSJapanese_EnglishDictionaryName; -extern NSString * const DCSKoreanDictionaryName; -extern NSString * const DCSKorean_EnglishDictionaryName; -extern NSString * const DCSNewOxfordAmericanDictionaryName; -extern NSString * const DCSOxfordAmericanWritersThesaurus; -extern NSString * const DCSOxfordDictionaryOfEnglish; -extern NSString * const DCSOxfordThesaurusOfEnglish; -extern NSString * const DCSSimplifiedChineseDictionaryName; -extern NSString * const DCSSimplifiedChinese_EnglishDictionaryName; -extern NSString * const DCSSpanishDictionaryName; -extern NSString * const DCSWikipediaDictionaryName; +extern NSString * const _Nonnull DCSAppleDictionaryName; +extern NSString * const _Nonnull DCSDutchDictionaryName; +extern NSString * const _Nonnull DCSFrenchDictionaryName; +extern NSString * const _Nonnull DCSGermanDictionaryName; +extern NSString * const _Nonnull DCSItalianDictionaryName; +extern NSString * const _Nonnull DCSJapaneseDictionaryName; +extern NSString * const _Nonnull DCSJapaneseSupaDaijirinDictionaryName; +extern NSString * const _Nonnull DCSJapanese_EnglishDictionaryName; +extern NSString * const _Nonnull DCSKoreanDictionaryName; +extern NSString * const _Nonnull DCSKorean_EnglishDictionaryName; +extern NSString * const _Nonnull DCSNewOxfordAmericanDictionaryName; +extern NSString * const _Nonnull DCSOxfordAmericanWritersThesaurus; +extern NSString * const _Nonnull DCSOxfordDictionaryOfEnglish; +extern NSString * const _Nonnull DCSOxfordThesaurusOfEnglish; +extern NSString * const _Nonnull DCSSimplifiedChineseDictionaryName; +extern NSString * const _Nonnull DCSSimplifiedChinese_EnglishDictionaryName; +extern NSString * const _Nonnull DCSSpanishDictionaryName; +extern NSString * const _Nonnull DCSWikipediaDictionaryName;