Как вернуть типизированный изменяемый массив из Swift в Objective-C?

Создайте папку db по умолчанию.

c:\data\db

, а также папку журнала

c:\data\log\mongo.log

или используйте команды following в командной строке

mkdir c:\data\log    
mkdir c:\data\db
-2
задан rmaddy 16 January 2019 в 02:20
поделиться

2 ответа

Итак, в итоге я сделал это так

@objc lazy var categories: Array<ForumCategoryData> = []

@objc func add(category: ForumCategoryData) {
    categories.append(category)
}

, потому что совместимость с целью c создает другие проблемы в замыканиях, если вы возвращаете NSMutableArray ... Я просто пытаюсь написать как можно более чистый код со смешанным swift / цель-c это чистая война.

0
ответ дан Renetik 16 January 2019 в 02:20
поделиться

В Swift NSMutableArray не поддерживает генерики. Также в Swift мы избегаем передачи изменяемых данных между методами. Поэтому лучше всего сделать это в Swift, чтобы сохранить информацию о вашем типе:

@objc
func someArray() -> [String] {
    return ["Hello"]
}

, а затем сделать изменяемую копию в Objective-C:

NSArray<NSString *> *array = [someClass someArray];
NSMutableArray<NSString *> *mutableArray = [array mutableCopy];
[mutableArray addObject:@"Hello again!"];
0
ответ дан Aaron Brager 16 January 2019 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: