Подстрока Swift 4 '(from:)' устарела: используйте индекс строковой развертки с оператором 'partial range from'
Я только что преобразовал мое маленькое приложение, но я нашел эту ошибку:
'substring (from:)' устарел: используйте индекс строковой развертки с оператором 'partial range from'
мой код:
let dateObj = dateFormatterFrom.date(from: dateStringa)
if dateObj != nil {
cell.detailTextLabel?.text = dateFormatterTo.string(from:(dateObj!))
} else {
let index = thisRecord.pubDate.index(thisRecord.pubDate.startIndex, offsetBy: 5)
cell.detailTextLabel?.text = thisRecord.pubDate.substring(from: index)
}
Ответы
Ответ 1
Следуйте приведенному ниже примеру, чтобы исправить это предупреждение
let testStr = 'Test Teja'
let finalStr = testStr.substring(to: index) // Swift 3
let finalStr = String(testStr[..<index]) // Swift 4
let finalStr = testStr.substring(from: index) // Swift 3
let finalStr = String(testStr[index...]) // Swift 4
//Swift 3
let finalStr = testStr.substring(from: index(startIndex, offsetBy: 3))
//Swift 4
let reqIndex = testStr.index(testStr.startIndex, offsetBy: 3)
let finalStr = String(testStr[..<reqIndex])
Ответ 2
Вместо substring
используйте suffix
. Используйте, как показано ниже:
cell.detailTextLabel?.text = String(thisRecord.pubDate.suffix(from: index))
Ответ 3
Это означает, что вы должны использовать новый оператор частичного диапазона как ваш верхний бит:
let str = "Hello World !!!"
if let index = str.range(of: "Hello ")?.upperBound {
let string = String(str[index...]) // "World !!!"
}
В вашем случае
cell.detailTextLabel?.text = String(thisRecord.pubDate[index...]))
Ответ 4
Большинство моих строк имеют контент A-Za-z и 0-9. Нет необходимости в сложных
Обработка индексов. Это расширение String основано на знакомых функциях LEFT/MID и RIGHT.
extension String {
// LEFT
// Returns the specified number of chars from the left of the string
// let str = "Hello"
// print(str.left(3)) // Hel
func left(_ to: Int) -> String {
return "\(self[..<self.index(startIndex, offsetBy: to)])"
}
// RIGHT
// Returns the specified number of chars from the right of the string
// let str = "Hello"
// print(str.left(3)) // llo
func right(_ from: Int) -> String {
return "\(self[self.index(startIndex, offsetBy: self.length-from)...])"
}
// MID
// Returns the specified number of chars from the startpoint of the string
// let str = "Hello"
// print(str.left(2,amount: 2)) // ll
func mid(_ from: Int, amount: Int) -> String {
let x = "\(self[self.index(startIndex, offsetBy: from)...])"
return x.left(amount)
}
}
Ответ 5
Если вы хотите получить подстроку с определенным смещением без верхней границы, сделайте следующее:
let index = thisRecord.pubDate.index(thisRecord.pubDate.startIndex, offsetBy: 5)
cell.detailTextLabel?.text = String(thisRecord.pubDate[index...]
Таким образом, вы создаете новый объект String
из существующего String thisRecord.pubDate
, беря что-либо от указанного индекса до конечного индекса оригинала String
.
Ответ 6
str[..<index]
str[index...]
Выше приведен код "частичный диапазон от"
Посмотрите на это Как я могу использовать подписки нарезки строк в Swift 4?