结构
Static
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+
相关用法
- Swift String.UTF8View first用法及代码示例
- Swift String.UTF16View firstIndex(where:)用法及代码示例
- Swift String init()用法及代码示例
- Swift String.UTF16View last(where:)用法及代码示例
- Swift String.UnicodeScalarView flatMap(_:)用法及代码示例
- Swift String.UTF8View split(maxSplits:omittingEmptySubsequences:whereSeparator:)用法及代码示例
- Swift String init(_:radix:uppercase:)用法及代码示例
- Swift String.UTF8View elementsEqual(_:)用法及代码示例
- Swift String.UnicodeScalarView min(by:)用法及代码示例
- Swift StrideThrough map(_:)用法及代码示例
- Swift String.UnicodeScalarView lastIndex(of:)用法及代码示例
- Swift String.UTF8View last(where:)用法及代码示例
- Swift String.Index ..<(_:_:)用法及代码示例
- Swift String.UTF8View split(separator:maxSplits:omittingEmptySubsequences:)用法及代码示例
- Swift StrideTo allSatisfy(_:)用法及代码示例
- Swift StrideTo joined(separator:)用法及代码示例
- Swift String.UnicodeScalarView filter(_:)用法及代码示例
- Swift StrideTo drop(while:)用法及代码示例
- Swift StrideTo filter(_:)用法及代码示例
- Swift String.UTF8View debugDescription用法及代码示例
- Swift String init(cString:)用法及代码示例
- Swift StrideThrough reduce(_:_:)用法及代码示例
- Swift String suffix(from:)用法及代码示例
- Swift String.UTF16View flatMap(_:)用法及代码示例
- Swift String removeAll(where:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 StaticString。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。