วิธีการแก้ปัญหา 'scanLocation' ถูกคัดค้านใน iOS 13.0


10

เมื่อพยายามใช้สแกนเนอร์ฉันได้รับคำเตือนว่า 'scanLocation' เลิกใช้แล้วใน iOS 13.0 เนื่องจากความสามารถในการสแกนจากตำแหน่งต่อไปนั้นค่อนข้างพื้นฐานในการสแกน String สงสัยว่าจะใช้อะไรแทน scanLocation เอกสารประกอบสำหรับสแกนเนอร์ของ Apple ไม่ได้กล่าวถึงการคัดค้าน แต่อย่างเดียวแนะนำว่าอะไรเกิดขึ้นที่ตำแหน่งสแกน

ตัวอย่างการใช้ scanLocation ซึ่งเลิกใช้แล้ว:

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

คำตอบ:


9

tl; dr - ใช้currentIndexแทนscanLocationเมื่อใช้Scannerใน Swift

อัปยศใน Apple สำหรับเอกสารที่ไม่ดี แต่ตามข้อมูลในไฟล์ NSScanner.h สำหรับรุ่น Objective-C ของเครื่องสแกนเฉพาะใน Swift เท่านั้นscanLocationคุณสมบัติดังกล่าวถูกเลิกใช้และแทนที่ด้วยcurrentIndexคุณสมบัติ


2

@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)
}

คุณจะรีเซ็ตมันกลับเป็น '0' ได้อย่างไร เช่น. scanner.scanLocation = 0
GameDev

คุณทำไม่ได้ คุณเพิ่งสร้างตัวอย่างใหม่ของScanner
Chuck Krutsinger
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.