- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
更新:从 Xcode 6.3 开始,这现在可以通过 nullability annotations 实现.
我一直想知道是否有人想出一种方法将 Obj-C 属性作为可选属性显式导入 Swift。
问题
考虑以下 ObjC 类:
@interface Foo : NSObject
@property (strong, nonatomic) NSObject* potentiallyNil;
@end
这很好,但是当你在 Swift 中使用它时,Xcode 倾向于将属性导入为实例本身或作为隐式展开的可选。
我见过这两者兼而有之
class Foo : NSObject {
var potentiallyNil : NSObject
}
还有
class Foo : NSObject {
var potentiallyNil : NSObject!
}
问题来了 - 在 Swift 中,您现在遇到了这个丑陋的问题,即知道您的属性可能为 nil,但必须避免隐式可选转换的美妙之处。您剩下以下选项之一:
一个显式的 nil 检查...
if(potentiallyNil == nil) {
bar()
}
或者通过解包手动转换为可选类型——同样丑陋...
let manuallyWrappedPotentiallyNil : NSObject? = potentiallyNil
if let unwrapped = manuallyWrappedPotentiallyNil {
bar();
}
这两者似乎都远非理想。在我看来,必须有办法解决这个问题!事实上,正如@matt 指出的那样,Apple 在整个测试版中都自己完成了这项工作,同时“审计可选的合规性”。我们可以这样做吗?
问题
归结为:给定 ObjC 属性
@property (strong, nonatomic) NSObject* potentiallyNil;
有没有一种方法可以使用签名将其导入到 Swift 中
var potentiallyNil : NSObject?
非常感谢所有其他 iOS/OS X 开发人员。
最佳答案
在问这个问题时,这是不可能的。但是,在 Xcode 6.3 中,有一个新的 nullability annotation。功能以启用此以前的私有(private)功能。因此问题不再相关。
关于ios - 将 Objective-C 属性显式导入 Swift 作为可选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25924606/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!