如何将包含空格的Swift字符串传递给C方法?

时间:2017-10-28 14:06:59

标签: c swift string libsass

我在C LibSass库周围编写了一个Swift包装器,并且在将非空字符串传递给C方法时遇到了一些麻烦。

LibSass库提供了一种设置自定义缩进值的方法。因为这个方法需要一个const char*我知道我可以将我的Swift String传递给这个方法,Swift会转换它。因为它是缩进,所以这个String只包含空格或\t,但是当我检查缩进的getter值时,我只收到一个空字符串。我按如下方式测试这个值:

XCTAssertEqual( sassOptions.indent, "\t" )

sassOptions.indent返回应设置的缩进。

缩进属性设置为func setIndent(_: String),调用以下LibSass方法:

void sass_option_set_indent(struct Sass_Options* options, const char* indent)

预期的options参数存储为内部属性,并提供给setIndent(_:String) Swift函数内的C方法。 我使用Homebrew(brew install --HEAD libsass)安装了LibSass库,并将库链接到具有this依赖项的项目。其他一切都按照我的预期运作。

有人知道Swift是否将一个只包含空格的String转换为空字符串以及如何避免这种行为?

我的setIndent函数:

public func setIndent( _ indent: String ) {

        sass_option_set_indent( self.options, indent )

}

另请参阅GitHub repository了解整个代码和测试。

0 个答案:

没有答案