2016-02-11 5 views
0

У меня есть массив строк в Swift объявлен как это:Как добавить новый элемент типа String в массив в Swift, от C

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

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

DataStreamBuffer.append(new_string) 

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

+0

Я не думаю, что вы можете назвать код 'Swift' с' C'. –

ответ

0

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

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10-ID122

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

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^