characters -String의 인스턴스 속성은 Xcode 9.1 에서 사용되지 않습니다.
characters
속성 을 사용하여 String에서 하위 문자열을 얻는 것이 매우 유용 했지만 이제는 더 이상 사용되지 않으며 Xcode는 사용을 제안합니다 substring
. 나는 SO 질문과 애플 개발자 튜토리얼 / 지침을 확인하려고 노력했다. 그러나 제안 된 해결책 / 대체를 볼 수 없었습니다.
경고 메시지는 다음과 같습니다.
‘문자’는 사용되지 않습니다. 문자열 또는 하위 문자열을 사용하십시오
property를 사용하여 많은 문자열 작업을 수행 / 처리했습니다 characters
.
이 업데이트에 대한 아이디어 나 정보가 있습니까?
답변
Swift 4는 문자열 API에 대한 변경 사항을 도입했습니다.
대신에
사용할 수 있습니다!stringValue.isEmpty
stringValue.characters.count > 0
예를 들어
let edit = "Summary"
edit.count // 7
답변
스위프트 4 vs 스위프트 3 예제 :
let myString = "test"
for char in myString.characters {print(char) } // Swift 3
for char in myString { print(char) } // Swift 4
let length = myString.characters.count // Swift 3
let length = myString.count // Swift 4
답변
문자열을 조작하는 가장 일반적인 경우 중 하나는 JSON 응답입니다. 이 예에서는 Bitcoin JSON 객체의 마지막 문자 (n)를 삭제하기 위해 시계 앱에서 확장을 만들었습니다.
스위프트 3 :
func dropLast(_ n: Int = 0) -> String {
return String(characters.dropLast(n))
Xcode 9.1 오류 메시지 :
‘문자’는 사용되지 않습니다. 문자열 또는 하위 문자열을 직접 사용하십시오
Xcode는 문자열 변수 나 메소드를 직접 사용하도록 지시하고 있습니다 .
스위프트 4 :
func dropLast(_ n: Int = 0) -> String {
return String(dropLast(n))
}
완벽한 확장 :
extension String {
func dropLast(_ n: Int = 0) -> String {
return String(dropLast(n))
}
var dropLast: String {
return dropLast()
}
}
요구:
print("rate:\(response.USDRate)")
let literalMarketPrice = response.USDRate.dropLast(2)
print("literal market price: \(literalMarketPrice)")
콘솔:
//rate:7,101.0888 //JSON float
//literal market price: 7,101.08 // JSON string literal
추가 예 :
print("Spell has \(invisibleSpellName.count) characters.")
return String(dropLast(n))
return String(removeLast(n))
선적 서류 비치:
당신은 종종 같은 일반적인 방법을 사용할 것 dropLast()
또는 removeLast()
나 count
그래서 여기에 각 방법에 대한 명시적인 애플 문서입니다.
답변
그 경고는 빙산의 정상 일뿐입니다. 문자열 변경이 많이 있었고 문자열은 다시 문자 모음입니다. 그러나 우리는 새롭고 멋진 하위 문자열을 얻었습니다 🙂
https://useyourloaf.com/blog/updating-strings-for-swift-4/에 대한 좋은 글입니다.
답변
이 옵션을 사용 characters
하기 때문에 String
스위프트 2.0 수집되는 멈췄다. 그러나이 스위프트 4 여전히 유효 코드입니다하지만 지금은 더 이상 필요 String
A는 Collection
다시.
예를 들어 Swift 4 String
에는 문자 수를 제공하는 직접 카운트 속성이 있습니다.
// Swift 4
let spString = "Stack"
spString.count // 5
문자열 및 하위 문자열의 예
끈
Swift 4는 String
이제 String의 첫 문자를 제공하는 Element를 직접 얻습니다.(string.characters.first)
let spString = "Stack"
let firstElement = spString.first //S
하위 문자열
SubString을 사용하면 첫 문자를 얻습니다.
let spstring = "Welcome"
let indexStartOfText = spstring.index(spstring.startIndex, offsetBy: 1)
let sub = spstring.substring(to: indexStartOfText)
print(sub) //W
답변
{$ 0.characters.first!를 사용하지 않고 사전 그룹화에이 코드를 사용할 수도 있습니다. }.
let cities = ["Shanghai": 24_256_800, "Karachi": 23_500_000, "Beijing": 21_516_000, "Seoul": 9_995_000]
let groupedCities = Dictionary(grouping: cities.keys) { $0.first! }
print(groupedCities)
답변
문자를 제거하십시오. 예를 들면 다음과 같습니다.
stringValue.characters.count에서 stringValue.count로