używam następujący kod, aby uzyskać String
podciąg z NSRange
:String, podciąg, Rząd, NSRange w Swift 4
func substring(with nsrange: NSRange) -> String? {
guard let range = Range.init(nsrange)
else { return nil }
let start = UTF16Index(range.lowerBound)
let end = UTF16Index(range.upperBound)
return String(utf16[start..<end])
}
(via: https://mjtsai.com/blog/2016/12/19/nsregularexpression-and-swift/)
Kiedy skompilować z Swift 4 (Xcode 9b4), otrzymuję następujące błędy dla dwóch linii, które deklarują start
i end
:
'init' is unavailable
'init' was obsoleted in Swift 4.0
i jestem zdezorientowany, ponieważ nie używam init.
Jak mogę to naprawić?
Xcode zmusza mnie do ustalenia kodu następująco: 'funkcjono podciąg (z nsrange: NSRange) - > String? { straży wypuścić zakres = zakres (nsrange, w: self) else {return nil} return String (self [zakres]) } ' – Koen
Jeśli sprawisz, że funkcja zwróci Substring zamiast String, nie będziesz mieć przekonwertować wynik. –
Ah, nie wiedziałem, że Substring jest typem, myślałem, że to literówka. – Koen