如何从 C 中将新的字符串元素附加到 Swift 中的数组

Posted

技术标签:

【中文标题】如何从 C 中将新的字符串元素附加到 Swift 中的数组【英文标题】:How to append a new String element to an array in Swift, from C 【发布时间】:2016-02-11 22:11:59 【问题描述】:

我在 Swift 中有一个字符串数组,声明如下:

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

在 Swift 中添加一个新元素,这很容易。我只是这样做:

DataStreamBuffer.append(new_string)

但是,我需要从 C 文件向 DataStreamBuffer 追加一个新元素。我的 C 代码中的正确程序应该是什么?我应该在 Swift 中做什么,以便从 C 中可以看到 DataStreamBuffer(我必须在 Bridging-Header.h 中声明任何内容吗?)

【问题讨论】:

我认为你不能从C 调用Swift 代码。 【参考方案1】:

如果您的意思是 Objective-C,那么这可能会有所帮助:

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

我自己还没有玩过它,所以我不确定任何 Objective-C 代码是否可以调用 Swift。如果是这种情况,那么您项目中的任何 C 代码都可以调用您的 Swift 代码,因为任何 C 代码都是有效的 Objective-C(即 Objective-C 是 C 的超集)。然而,反过来则不然。

另一种方法是有一个 C 函数,它返回一个您想要附加到 Swift 字符串数组的字符串。 C 函数从 Swift 代码中调用,它获取字符串并将其实际附加到 Swift 数组中。您将使用桥接头使 C 函数对 Swift 可见。

这种方法的一种变体是在 C 代码中声明回调函数,使用桥接头将声明导入 Swift,然后在 Swift 中实现回调。这是一种更困难的方法,但如果应用程序逻辑的这部分是由 C 代码控制的,那么它会派上用场。

如果你提供更详细的工作背景,人们可能会给你更具体的建议,甚至是一些例子。

【讨论】:

以上是关于如何从 C 中将新的字符串元素附加到 Swift 中的数组的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 中将模型附加到数组中

有人可以解释如何在 C 编程中将元素附加到数组中吗?

如何在 Userdefaults (SwiftUI) 中将新元素附加到数组

如何在 Swift 或 Objective C 中将文本添加到文件中?

在 Swift 中将元素添加到数组中

如何在swift中将数字附加到double