当前位置: 首页>>编程示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。