web-dev-qa-db-ja.com

「scanLocation」を解決する方法はiOS 13.0で廃止されました

スキャナーを使用しようとすると、「scanLocation」がiOS 13.0で廃止されたという警告が表示されます。次の場所からスキャンできることは文字列をスキャンするための基本であるので、scanLocationの代わりに何を使用するのか疑問に思います。 Appleの Scanner に関するドキュメントでは、非推奨については触れられておらず、scanLocationに代わるものを示唆しています。

廃止予定のscanLocationの使用例:

while !scanner.isAtEnd {
    print(scanner.scanUpToCharacters(from: brackets))
    let block = scanner.string[scanner.currentIndex...]
    print(block)
    scanner.scanLocation = scanner.scanLocation + 1
}
10

tl; dr-SwiftでcurrentIndexを使用する場合、scanLocationではなくScannerを使用します。

恥ずかしいApple。しかし、SwiftのみのObjective-CバージョンのScannerのNSScanner.hファイルの情報に基づいて、scanLocationプロパティが廃止され、currentIndexプロパティに置き換えられました。

7
rmaddy

@rmaddyはすでに正しい答えを出していますが、currentIndexに1を追加するだけでは異なるため、scanLocationをインクリメントする方法を示しています。

while !scanner.isAtEnd {
    print(scanner.scanUpToCharacters(from: brackets))
    let block = scanner.string[scanner.currentIndex...]
    print(block)
    scanner.currentIndex = scanner.string.index(after: scanner.currentIndex)
}
1