當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Swift StaticString用法及代碼示例

結構

StaticString

一種字符串類型,旨在表示在編譯時已知的文本。

聲明

@frozen struct StaticString

概述

StaticString 類型的實例是不可變的。

StaticString 隻提供對其內容的低級訪問,這與 Swift 更常用的 String 類型不同。靜態字符串可以使用以下任一項作為其存儲:

  • 指向以空字符結尾的 UTF-8 代碼單元序列的指針:

    
    let emoji: StaticString = "\u{1F600}"
    emoji.hasPointerRepresentation  //-> true
    emoji.isASCII                   //-> false
    emoji.unicodeScalar             //-> Fatal error!
    emoji.utf8CodeUnitCount         //-> 4
    emoji.utf8Start[0]              //-> 0xF0
    emoji.utf8Start[1]              //-> 0x9F
    emoji.utf8Start[2]              //-> 0x98
    emoji.utf8Start[3]              //-> 0x80
    emoji.utf8Start[4]              //-> 0x00
  • 在非常有限的情況下,單個 Unicode 標量值:

    
    struct MyStaticScalar: ExpressibleByUnicodeScalarLiteral {
        typealias UnicodeScalarLiteralType = StaticString
        let value: StaticString
        init(unicodeScalarLiteral value: StaticString) {
            self.value = value
        }
    }
    
    
    let emoji: StaticString = MyStaticScalar("\u{1F600}").value
    emoji.hasPointerRepresentation  //-> false
    emoji.isASCII                   //-> false
    emoji.unicodeScalar.value       //-> 0x1F600
    emoji.utf8CodeUnitCount         //-> Fatal error!
    emoji.utf8Start                 //-> Fatal error!

您可以使用 withUTF8Buffer(_:) 方法訪問靜態字符串的內容,而不管靜態字符串使用哪種表示形式。


emoji.withUTF8Buffer { utf8 in
    utf8.count  //-> 4
    utf8[0]     //-> 0xF0
    utf8[1]     //-> 0x9F
    utf8[2]     //-> 0x98
    utf8[3]     //-> 0x80
    utf8[4]     //-> Fatal error!
}

可用版本

iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 StaticString。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。