如何从 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 中的数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Userdefaults (SwiftUI) 中将新元素附加到数组