Sto tentando di determinare gli indici di occorrenze di una data stringa in un String
, quindi generare un NSRange
utilizzando tali indici al fine di aggiungere attributi a un NSMutableAttributedString
. Il problema è rangeOfString
restituisce Range<Index>
ma addAttributes:range:
prevede uno NSRange
. I miei tentativi di creare un NSRange
dagli indici di inizio e fine dello Range
non sono riusciti, perché String.CharacterView.Index
non è un Int
, quindi non verrà compilato.Usando gamma <Index> con NSRange nell'API NSAttributedString
Come utilizzare i valori Range<Index>
per creare un 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)
Non vedo che chiami 'rangeOfString 'ovunque. Il tuo codice non ha senso. Che diamine è 'originalString (" {")' ???? Questo non può essere il tuo vero codice; è un'assurdità. – matt
@matt Manca una parte della seconda e della terza riga, aggiornata – Joey
La mia risposta rimane la stessa. Dove ora hai 'let firstBraceIndex = originalString.rangeOfString (" {")', dì 'let firstBraceIndex = (originalString as NSString) .rangeOfString (" {")'. Ora hai un NSRange e puoi continuare da lì. – matt