簡體   English   中英

錯誤:將String擴展名轉換為swift 3時,源文件中的編輯器占位符

[英]Error: Editor placeholder in source file, when converting String extension to swift 3

    subscript (r: Range<Int>) -> String {
        let start = startIndex.advancedBy(r.startIndex)
        let end = start.advancedBy(r.endIndex - r.startIndex)
        return self[Range(start: start, end: end)]
    }

苦苦掙扎將我的String擴展中的上面的下標轉換為swift 3.下面是我在Xcode上按下轉換按鈕后發生的事情。

        subscript (r: Range<Int>) -> String {
            let start = characters.index(startIndex, offsetBy: r.lowerBound)
            let end = <#T##String.CharacterView corresponding to `start`##String.CharacterView#>.index(start, offsetBy: r.upperBound - r.lowerBound)
            return self[(start ..< end)]
        }

錯誤的屏幕截圖

您需要做的就是在索引前添加characters 編譯器還為您提供了一個提示,以添加String.CharacterView corresponding to start ##String.CharacterView 消息可能有點模糊,但它包含很大的價值! 告訴你,那是期待一系列人物。 但是,正如@vadian建議的那樣,你甚至可以從一開始就省略這些characters

我也寫了一點測試,只是為了確保。

import Foundation

extension String {
    subscript (r: Range<Int>) -> String {
        let start = index(startIndex, offsetBy: r.lowerBound)
        let end = index(start, offsetBy: r.upperBound - r.lowerBound)
        return self[start..<end]
    }
}

let string = "Hello world"
let range = Range(uncheckedBounds: (lower: 0, upper: 2))
let s = string[range] // prints "He"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM