此前在Objective-C,我將能夠做這樣的事情:如何自動複製原始文字?
NSInteger count = 100;
NSString *text = [NSString stringWithFormat:@"count: %@", @(count)];
的Objective-C引進了自動裝箱原始文字的概念,所以我沒有處理%d
,%ld
等。它會自動將原始文字轉換爲NSObject
,格式化程序將解析爲%@
。
在迅速,有什麼類似的,我們可以做?
let count: Int = 100
let text = String.init(format: "count of %@", count)
上述崩潰因爲count
不是指向對象的指針。
我知道我可以做內聯參數注入,如:
let text = "count of \(count)"
但由於本地化的目的,本地化字符串格式需要更新的參數,它的代碼立即上面不能做之前發生。
僅供參考 - 這不完全是Objective-C中的典型解決方案。大多數人會使用:'NSString * text = [NSString stringWithFormat:@「count:%ld」,(long)count];'。 – rmaddy
'%@'格式說明符特別針對Objective-C對象。由於Swifts本地'Int'不是(不再)隱式橋接到Obj-C對象('NSNumber'),所以格式說明符不能應用於這種本地類型。你自己的解決方法工作的原因是'String'仍然被橋接到'NSString'。另一個解決方法是在用'%@'解析之前將'Int'實例轉換爲'NSNumber':'let text = String.init(format:「count of%@」,NSNumber(value:count))''。 – dfri
那麼你的問題是你需要能夠動態更新計數? – PeejWeej