您看到的问题是,Swift无法桥接可选值类型-这
Int是一种值类型,因此
Int!无法桥接。可选引用类型(即任何类)都可以正确桥接,因为它们始终可以
nil在Objective-
C中使用。您的两个选择是使参数成为非可选参数,在这种情况下,它将作为
int或桥接到ObjC
NSInteger:
// Swiftpublic init(userId: Int) { self.init(style: UITableViewStyle.Plain) self.userId = userId}// ObjCMyClass *instance = [[MyClass alloc] initWithUserId: 10];或使用可选
NSNumber?,因为可以将其桥接为可选值:
// Swiftpublic init(userId: NSNumber?) { self.init(style: UITableViewStyle.Plain) self.userId = userId?.integerValue}// ObjCMyClass *instance = [[MyClass alloc] initWithUserId: @10]; // note the @-literal但是请注意,您实际上并没有像对待可选参数那样对待参数-除非
self.userId也是可选参数,否则您将自己设置为可能会导致运行时崩溃。



