IOS - 啥是 Swift 字符类型的 ObjC NSObject 等价物?
Posted
技术标签:
【中文标题】IOS - 啥是 Swift 字符类型的 ObjC NSObject 等价物?【英文标题】:IOS - What is the ObjC NSObject equivalent of Swift Character type?IOS - 什么是 Swift 字符类型的 ObjC NSObject 等价物? 【发布时间】:2017-02-23 02:27:17 【问题描述】:我的意思是只将输入限制为一个字符,而不是使用String
并检查长度,我决定使用Character
。
问题是我可以把它放在NSArray
中,但是类型变成了_SwiftValue
,所以我不知道如何在ObjC代码中使用它。
【问题讨论】:
【参考方案1】:在 Objective-C 中它是 char,它是一个原始的并且只包含一个字节。所以 char* 是一个字符数组,本质上是一个字符串。
如果我是你,我会坚持使用 NSString 并检查长度。
【讨论】:
你确定吗?我很确定NSArray
不采用原始类型。由于NSArray
确实将Swift Character
保持为_SwiftValue
,这意味着存在等效的NSObject 类型。
你是对的,它不采用原始类型,我指的是 char*。这就是为什么我建议使用 NSString 以便您可以使用 NSArray 来包含它们。
明白。如果没有其他选择,我会使用NSString
,但似乎有可能。当然,如果不是public类型和yada yada,我就只能和NSString
和解了。
嗯,还有另一种选择,那就是 char 数组。如果你真的担心内存使用,那么我会这样做,但 NSString 是更好的选择。
@BridgeTheGap _SwiftValue
是一个值框,当没有一个等效的 Objective-C 类型可以桥接(否则它会桥接)。每当您尝试在 Objective-C 中使用来自 Swift 的非@objc
类型时,您都会得到一个_SwiftValue
(这就是为什么在 Objective-C 中没有使用它的好方法;它是不透明的)。您将不得不使用不同的类型来表示它;另一种选择是将其存储在NSValue
或NSNumber
中,而不是字符串。以上是关于IOS - 啥是 Swift 字符类型的 ObjC NSObject 等价物?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 模块化工程 swift 与 objc 混编遇到的问题
iOS 模块化工程 swift 与 objc 混编遇到的问题
iOS 模块化工程 swift 与 objc 混编遇到的问题
iOS swift objc_setAssociatedObject和objc_getAssociatedObject使用