gpt4 book ai didi

ios - 在 Swift iOS 中将 NSString * 转换为 String 并将 Character 作为参数传递的问题

转载 作者:行者123 更新时间:2023-11-28 13:14:40 27 4
gpt4 key购买 nike

我正在使用 Bridging header 从 Swift 调用 Objective 方法。

-(NSString *) PatternSetCreator: (char)Signature detection_time_in_sec:(int)detection_time_in_sec patternLength:(int)patternLength maxPatternSetSize:(int)maxPatternSetSize

有两个问题:

a) 从 Swift 调用此方法时,我无法将单个字符作为参数传递

b) 我不确定如何获取返回类型 NSString 并将其分配给 String 变量

最佳答案

Swift 中的单个 C char 表示为 CCharInt8 的类型别名。

(类似地,Swift 中的 C intCIntInt32 的类型别名)

如果你想要一个特定的字符并且正在使用 Swift 1.2,则有一个 UInt8 的初始化器,它接受一个 UnicodeScalar。但是,令人讨厌的是,您必须随后将其转换为 Int8 以使其与 C 方法兼容:

    let ch = CChar(UInt8(ascii: "x"))
let i = CInt(100)
let s = obj.PatternSetCreator(ch,
detection_time_in_sec: i,
patternLength: i,
maxPatternSetSize: i)

您不需要做任何特殊的事情来将返回的 NSString 转换为 String。桥接会自动执行此操作。

(或者更确切地说,它将返回一个 String! – 但如果保证 objective-c 代码每次都返回一个有效的字符串并且永远不会返回空指针,则可以将定义更改为 -(nonnull NSString *) PatternSetCreator: etc... 这意味着它将返回一个 String)

关于ios - 在 Swift iOS 中将 NSString * 转换为 String 并将 Character 作为参数传递的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29509340/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com