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…))。