Cách giải quyết 'scanLocation' không được dùng trong iOS 13.0


10

Khi thử sử dụng Máy quét, tôi nhận được cảnh báo rằng 'scanLocation' không được dùng trong iOS 13.0. Vì có thể quét từ vị trí tiếp theo khá cơ bản để quét Chuỗi, nên tự hỏi nên sử dụng cái gì thay vì quétLocation. Tài liệu của Apple cho Máy quét thậm chí không đề cập đến sự phản đối, chứ đừng nói đến việc đề xuất những gì đã thay thế vị trí quét.

Ví dụ về việc sử dụng scanLocation, không được dùng nữa:

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

Câu trả lời:


9

tl; dr - sử dụng currentIndexthay vì scanLocationkhi sử dụng Scannertrong Swift.

Xấu hổ về Apple vì tài liệu kém. Nhưng dựa trên thông tin trong tệp NSScanner.h cho phiên bản Objective-C của Scanner, chỉ trong Swift, thuộc scanLocationtính đã bị phản đối và được thay thế bằng thuộc currentIndextính.


2

@rmaddy đã đưa ra câu trả lời đúng, nhưng điều này cho thấy cách tăng số currentIndexvì nó khác với việc chỉ thêm 1 vào 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)
}

Làm thế nào bạn có thể đặt lại nó về '0'? ví dụ. scanner.scanLocation = 0
GameDev

Bạn không. Bạn chỉ cần tạo một phiên bản mới củaScanner
Chuck Krutsinger
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.