A string type designed to represent text that is known at compile time.

    @frozen struct StaticString


    Instances of the StaticString type are immutable.

    StaticString provides only low-level access to its contents, unlike Swift’s more commonly used String type. A static string can use either of the following as its storage:

    • a pointer to a null-terminated sequence of UTF-8 code units:

      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
    • a single Unicode scalar value, under very limited circumstances:

      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!

    You can use the withUTF8Buffer(_:) method to access a static string’s contents, regardless of which representation the static string uses.

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



    Instance Properties

    Instance Methods