我試圖確定String
中給定字符串出現的索引,然後使用這些索引生成NSRange
以便將屬性添加到NSMutableAttributedString
。問題是rangeOfString
回報Range<Index>
但addAttributes:range:
預計的NSRange
。我試圖創建從Range
的開始和結束索引的NSRange
都失敗了,因爲String.CharacterView.Index
不是Int
,因此它不會編譯。在NSAttributedString API中使用範圍<Index>和NSRange
一個如何使用Range<Index>
值來創建一個NSRange
?
var originalString = "Hello {world} and those who inhabit it."
let firstBraceIndex = originalString.rangeOfString("{") //Range<Index>
let firstClosingBraceIndex = originalString.rangeOfString("}")
let range = NSMakeRange(firstBraceIndex.startIndex, firstClosingBraceIndex.endIndex)
//compile time error: cannot convert value of type Index to expected argument type Int
let attributedString = NSMutableAttributedString(string: originalString)
attributedString.addAttributes([NSFontAttributeName: boldFont], range: range)
我看不到你在任何地方調用'rangeOfString'。你的代碼沒有意義。什麼是'originalString(「{」)'?這不可能是你真正的代碼;這是無稽之談。 – matt
@matt錯過了第二和第三行的部分,更新了 – Joey
我的答案保持不變。如果你現在有'let firstBraceIndex = originalString.rangeOfString(「{」)',說'let firstBraceIndex =(originalString as NSString).rangeOfString(「{」)'。現在你有一個NSRange,可以從那裏繼續。 – matt