Swift 1.2 不愿意我的 NSString "+" map.reduce
Swift 1.2 not willing my NSString "+" map.reduce
这是在 Swift 1.1
中完美运行的代码
在我的开头 class 我有
var bytes = [UInt8]?()
后来我有
func hexString() -> String? {
if let b = bytes {
return b.map({NSString(format: "%02x", [=13=])}).reduce("", +)
}
return nil
}
Swift 1.2 给我
调用中缺少参数标签 'combine:'
因此希望我以这种方式重新表述我的 map reduce
return b.map({NSString(format: "%02x", [=14=])}).reduce("", combine: +)
请注意第二个 reduce
参数的显式 combine。如果我这样做,尽管我在 +
:
上收到另一个错误
找不到接受所提供参数的“+”重载
这个错误对我来说毫无意义,因为 NSString(format:)
产生的是一个 NSString,所以它应该与 +
一起工作,对吗?
似乎是因为 Swift 1.2 禁用了桥接。此替换不会产生错误:
var bytes = [UInt8]?()
func hexString() -> String? {
if let b = bytes {
return b.map() {String(format: "%02x", [=10=])}.reduce("", combine: +)
}
return nil
}
我认为问题在于 NSString 没有实现“+”运算符,只有 String 实现了。在 Swift 1.1 中,NSString 自动转换为 String。
这就是为什么你应该使用 String 而不是 NSString。
func hexString() -> String? {
if let b = bytes {
return b.map({String(format: "%02x", [=10=])}).reduce("", combine: +)
}
return nil
}
这是在 Swift 1.1
中完美运行的代码在我的开头 class 我有
var bytes = [UInt8]?()
后来我有
func hexString() -> String? {
if let b = bytes {
return b.map({NSString(format: "%02x", [=13=])}).reduce("", +)
}
return nil
}
Swift 1.2 给我
调用中缺少参数标签 'combine:'
因此希望我以这种方式重新表述我的 map reduce
return b.map({NSString(format: "%02x", [=14=])}).reduce("", combine: +)
请注意第二个 reduce
参数的显式 combine。如果我这样做,尽管我在 +
:
找不到接受所提供参数的“+”重载
这个错误对我来说毫无意义,因为 NSString(format:)
产生的是一个 NSString,所以它应该与 +
一起工作,对吗?
似乎是因为 Swift 1.2 禁用了桥接。此替换不会产生错误:
var bytes = [UInt8]?()
func hexString() -> String? {
if let b = bytes {
return b.map() {String(format: "%02x", [=10=])}.reduce("", combine: +)
}
return nil
}
我认为问题在于 NSString 没有实现“+”运算符,只有 String 实现了。在 Swift 1.1 中,NSString 自动转换为 String。
这就是为什么你应该使用 String 而不是 NSString。
func hexString() -> String? {
if let b = bytes {
return b.map({String(format: "%02x", [=10=])}).reduce("", combine: +)
}
return nil
}