NSUInteger 和 NSInteger 桥接到 Swift
NSUInteger and NSInteger bridging to Swift
使用 Swift 1.2(是的,我没有切换到 Xcode 7,这让我很伤心),我有以下 table 视图委托方法:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.coreDataSource.numberOfRowsInSection(section)
}
导致Xcode6.4报错:
Cannot invoke 'numberOfRowsInSection' with an argument list of type
'(Int)'
我的 CoreDataSource 方法桥接自 Objective-C,具有以下 .h 声明:
- (NSUInteger) numberOfRowsInSection: (NSUInteger) section;
如果我在 table 视图委托方法中应用 UInt 强制转换:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.coreDataSource.numberOfRowsInSection(UInt(section))
}
Xcode 现在给出错误:
'UInt' is not convertible to 'Int'
所以,如果你这样做,它看起来很糟糕,如果你不这样做,它看起来很糟糕。
来自Apple's docs,他们说:
Swift bridges NSUInteger and NSInteger to Int.
想法?
将整个 return 语句包装在 Int
中 (return Int(self.coreDataSource…)
)。
使用 Swift 1.2(是的,我没有切换到 Xcode 7,这让我很伤心),我有以下 table 视图委托方法:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.coreDataSource.numberOfRowsInSection(section)
}
导致Xcode6.4报错:
Cannot invoke 'numberOfRowsInSection' with an argument list of type '(Int)'
我的 CoreDataSource 方法桥接自 Objective-C,具有以下 .h 声明:
- (NSUInteger) numberOfRowsInSection: (NSUInteger) section;
如果我在 table 视图委托方法中应用 UInt 强制转换:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.coreDataSource.numberOfRowsInSection(UInt(section))
}
Xcode 现在给出错误:
'UInt' is not convertible to 'Int'
所以,如果你这样做,它看起来很糟糕,如果你不这样做,它看起来很糟糕。
来自Apple's docs,他们说:
Swift bridges NSUInteger and NSInteger to Int.
想法?
将整个 return 语句包装在 Int
中 (return Int(self.coreDataSource…)
)。