Как добавить новый элемент String в массив в Swift, из C

У меня есть массив строк в Swift, объявленный так:

var DataStreamBuffer : [String] = {return []}()

Добавить новый элемент в Swift легко. Я просто делаю:

DataStreamBuffer.append(new_string)

Однако мне нужно добавить новый элемент в DataStreamBuffer из файла C. Какой должна быть правильная процедура в моем C-коде? И что мне делать в Swift, чтобы DataStreamBuffer был виден из C (нужно ли что-либо объявлять в Bridging-Header.h?)

1 ответ

Если вы случайно имеете в виду Objective-C, то это может помочь:

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html

Я еще не играл с ним, поэтому я не уверен, что любой код Objective-C может вызывать Swift. Если это так, то любой C-код в вашем проекте может вызывать ваш Swift-код, потому что любой C-код является допустимым Objective-C (т. Е. Objective-C является надмножеством C). Однако обратное неверно.

Другой подход заключается в том, чтобы иметь функцию C, которая возвращает строку, которую вы хотите добавить в массив строк Swift. Функция C вызывается из кода Swift, который получает строку и фактически добавляет ее в массив Swift. Вы бы использовали соединительный заголовок, чтобы сделать функцию C видимой для Swift.

Разновидностью этого подхода будет объявление функции обратного вызова в вашем коде C, импорт объявления в Swift с использованием соединительного заголовка и реализация обратного вызова в Swift. Это более сложный подход, но он пригодится, если эта часть логики приложения управляется из кода Си.

Если вы предоставите более подробный контекст того, что вы делаете, люди могут дать вам более конкретные советы или даже некоторые примеры.

Другие вопросы по тегам