Lorsque je tente d'appliquer des attributs à la sous-chaîne, je parfois obtenir un crash dans le code suivant:NSMutableAttributedString Exception fatale: NSRangeException
// Dummy strings
let originalString = "Some example string"
let searchSubString = "exam"
// Get range of sub-string for which new attributes are to be set.
let rangeOfSubString: NSRange = (originalString.lowercaseString as NSString).rangeOfString(searchSubString.lowercaseString)
// Apply new attributes to the sub-string in original string and show it in UILabel.
let attributedOriginalString = NSMutableAttributedString(string: originalString, attributes: [NSForegroundColorAttributeName : UIColor.blueColor()])
attributedOriginalString.addAttribute(NSFontAttributeName, value: UIFont.systemFontOfSize(14.0), range: rangeOfSubString)
attributedOriginalString.addAttribute(NSForegroundColorAttributeName, value: UIColor.redColor(), range: rangeOfSubString)
self.textLabel.attributedText = attributedOriginalString
Et voici la trace de la pile:
Thread : Fatal Exception: NSRangeException
0 CoreFoundation 0x26cbefef __exceptionPreprocess
1 libobjc.A.dylib 0x35362c8b objc_exception_throw
2 CoreFoundation 0x26cbef35 -[NSException initWithCoder:]
3 Foundation 0x2793ac3b -[NSRLEArray objectAtIndex:effectiveRange:]
4 Foundation 0x27954b2d -[NSConcreteMutableAttributedString addAttribute:value:range:]
Je ne suis pas capable de le repro quoique, mais j'ai eu ce crash journal via crashlytics.
Le journal de l'accident semble dire que le rangeOfSubString
est au-delà des limites de originalString
, mais je ne pense pas que cela va jamais arriver. Est-ce que quelqu'un peut me signaler ce qui pourrait être la raison de l'accident?
votre rangeOfSubString n'est pas correct –
Quel est le problème? –
Je pense que le searchSubString que vous utilisez est dynamique donc il ne vient pas dans la chaîne originalString donc l'accident se produit –