可以通过桥接将Swift可选Int(Int?)暴露给Objective-C?

可以通过桥接将Swift可选Int(Int?)暴露给Objective-C?,第1张

概述在一个从基于Obj-C的框架派生的 Swift类中(但是可以很容易地是一个具有@objc属性的Swift类),我声明了两个存储的属性: var optInt: Int?var optString: String? 只有optString通过生成的-Swift.h头部暴露给Obj-C. 串?可能是罚款,因为它是使用可以为零的NSString对象暴露,所以桥接有一种方式来表示没有价值. 如果我删除? 在一个从基于Obj-C的框架派生的 Swift类中(但是可以很容易地是一个具有@objc属性的Swift类),我声明了两个存储的属性:
var optInt: Int?var optString: String?

只有optString通过生成的-Swift.h头部暴露给Obj-C.

串?可能是罚款,因为它是使用可以为零的Nsstring对象暴露,所以桥接有一种方式来表示没有价值.

如果我删除?从optInt,它暴露了一个NSInteger类型,所以我可以看到,对于非可选整数,它避免对象和桥接值类型到值类型,但这是否意味着一个Int?不能暴露?

我似乎找不到任何明确说明这种情况的文件.在这里有一个不兼容的Swift功能的完整列表,这不是:Using Swift from Objective-C

这里的用例是需要传递可以合法为零的数字ID的经典情况.在Swift前世界,NSNumber和nil正是我如何实现这一点,但是尝试将一个类迁移到Swift,然后在Swift类中专门针对的是Obj-C类型,这是非常正确的.

我想我曾设想过一个Int?不同于Int将在后台作为NSNumber桥接,其潜在的零价值在Swift中提供可选的“没有价值”元素.

有没有什么我在这里错过?要重申,Swift可选Int(Int?)可以通过桥接暴露于Objective-C吗?

暴露Int的问题?属性为NSNumber *,您可以从Objective-C存储非Int兼容的NSNumber.

你可以计算NSNumber?财产包裹你的Int?属性.吸气者只会返回Int?变量. setter将从 – [NSNumber integerValue]设置Int变量.

总结

以上是内存溢出为你收集整理的可以通过桥接将Swift可选Int(Int?)暴露给Objective-C?全部内容,希望文章能够帮你解决可以通过桥接将Swift可选Int(Int?)暴露给Objective-C?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1040086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存