では、ジェネリック医薬品の種類を治療するための方法と、ライブラリと、未定義の型と引数を使用する方法を理解することはできません:「『T』型の値を変換できません...」ジェネリック
func cellWith<T>(value: T) -> String { // I expect Int, Double or String
// type value as argument
let fm = NSNumberFormatter() // Double type argument will be
fm.numberStyle = .CurrencyStyle // processed like "currency"
if value.self is Double { // In case value have type "Double",
// like 20_000.00
return(fm.stringFromNumber(value)) // I expect return $20,000.00
^~~~~
// ERROR: Cannot convert value of type 'T' to expected argument type 'NSNumber'
} else {
return("bla-bla-bla")
}
}
汎用メソッドの代わりに 'Any'を使いたいかもしれません。とにかくこれを 'quickValue = value as let let 'とすることで迅速にキャストできますか?ダブル{...使用} '。 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TypeCasting.html – Kevin
を参照してください。これは、 'return(fm.stringFromNumber(NSNumber(double:doubleValue))')で動作します。私は知らないが、なぜ私は最後に文字列の値をunwrapする必要がありますか? –
'stringFromNumber(_ :)'はnil以外の値を返すことは保証されていませんが、あなたのメソッドは保証されています。 – avismara