我使用Bridging标头从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变量
答案 0 :(得分:2)
Swift中的单个C char
表示为CChar
,Int8
的类型。
(类似地,Swift中的C int
为CInt
,Int32
的类型
如果你想要一个特定的角色并且正在使用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!
- 但如果目标c代码保证每次都返回一个有效的字符串,而不是空指针,则定义可以更改为-(nonnull NSString *) PatternSetCreator: etc…
这意味着它将返回String
而不是