A view of an attributed string’s contents as a collection of UTF-16 code units.
Members (10)
get · iOS 26.0+
startIndex
TypeScript
get startIndex(): AttributedString_Index
Swift declaration
var startIndex: AttributedString.Index { get }
The position of the first element in a nonempty collection.
If the collection is empty, `startIndex` is equal to `endIndex`.
get · iOS 26.0+
count
TypeScript
get count(): number
Swift declaration
var count: Int { get }
The number of elements in the collection.
To check whether a collection is empty, use its `isEmpty` property
instead of comparing `count` to zero. Unless the collection guarantees
random-access performance, calculating `count` can be an O(*n*)
operation.
- Complexity: O(1) if the collection conforms to
`RandomAccessCollection`; otherwise, O(*n*), where *n* is the length
of the collection.
Returns the position immediately after the given index.
The successor of an index must be well defined. For an index `i` into a
collection `c`, calling `c.index(after: i)` returns the same index every
time.
- Parameter i: A valid index of the collection. `i` must be less than
`endIndex`.
- Returns: The index value immediately after `i`.
Returns the position immediately before the given index.
- Parameter i: A valid index of the collection. `i` must be greater than
`startIndex`.
- Returns: The index value immediately before `i`.
Returns an index that is the specified distance from the given index,
unless that distance is beyond a given limiting index.
The following example obtains an index advanced four positions from a
string's starting index and then prints the character at that position.
The operation doesn't require going beyond the limiting `s.endIndex`
value, so it succeeds.
let s = "Swift"
if let i = s.index(s.startIndex, offsetBy: 4, limitedBy: s.endIndex) {
print(s[i])
}
// Prints "t"
The next example attempts to retrieve an index six positions from
`s.startIndex` but fails, because that distance is beyond the index
passed as `limit`.
let j = s.index(s.startIndex, offsetBy: 6, limitedBy: s.endIndex)
print(j)
// Prints "nil"
The value passed as `distance` must not offset `i` beyond the bounds of
the collection, unless the index passed as `limit` prevents offsetting
beyond those bounds.
- Parameters:
- i: A valid index of the collection.
- distance: The distance to offset `i`. `distance` must not be negative
unless the collection conforms to the `BidirectionalCollection`
protocol.
- limit: A valid index of the collection to use as a limit. If
`distance > 0`, a limit that is less than `i` has no effect.
Likewise, if `distance < 0`, a limit that is greater than `i` has no
effect.
- Returns: An index offset by `distance` from the index `i`, unless that
index would be beyond `limit` in the direction of movement. In that
case, the method returns `nil`.
- Complexity: O(1) if the collection conforms to
`RandomAccessCollection`; otherwise, O(*k*), where *k* is the absolute
value of `distance`.
Returns an index that is the specified distance from the given index.
The following example obtains an index advanced four positions from a
string's starting index and then prints the character at that position.
let s = "Swift"
let i = s.index(s.startIndex, offsetBy: 4)
print(s[i])
// Prints "t"
The value passed as `distance` must not offset `i` beyond the bounds of
the collection.
- Parameters:
- i: A valid index of the collection.
- distance: The distance to offset `i`. `distance` must not be negative
unless the collection conforms to the `BidirectionalCollection`
protocol.
- Returns: An index offset by `distance` from the index `i`. If
`distance` is positive, this is the same value as the result of
`distance` calls to `index(after:)`. If `distance` is negative, this
is the same value as the result of `abs(distance)` calls to
`index(before:)`.
- Complexity: O(1) if the collection conforms to
`RandomAccessCollection`; otherwise, O(*k*), where *k* is the absolute
value of `distance`.
method · iOS 26.0+
distance
TypeScript
distance(start: AttributedString_Index, end: AttributedString_Index): number
Swift declaration
func distance(from start: AttributedString.Index, to end: AttributedString.Index) -> Int
Returns the distance between two indices.
Unless the collection conforms to the `BidirectionalCollection` protocol,
`start` must be less than or equal to `end`.
- Parameters:
- start: A valid index of the collection.
- end: Another valid index of the collection. If `end` is equal to
`start`, the result is zero.
- Returns: The distance between `start` and `end`. The result can be
negative only if the collection conforms to the
`BidirectionalCollection` protocol.
- Complexity: O(1) if the collection conforms to
`RandomAccessCollection`; otherwise, O(*k*), where *k* is the
resulting distance.
get · iOS 26.0+
endIndex
TypeScript
get endIndex(): AttributedString_Index
Swift declaration
var endIndex: AttributedString.Index { get }
The collection's "past the end" position---that is, the position one
greater than the last valid subscript argument.
When you need a range that includes the last element of a collection, use
the half-open range operator (`..<`) with `endIndex`. The `..<` operator
creates a range that doesn't include the upper bound, so it's always
safe to use with `endIndex`. For example:
let numbers = [10, 20, 30, 40, 50]
if let index = numbers.firstIndex(of: 30) {
print(numbers[index ..< numbers.endIndex])
}
// Prints "[30, 40, 50]"
If the collection is empty, `endIndex` is equal to `startIndex`.
subscript(bounds: Range<AttributedString.Index>) -> AttributedString.UTF16View { get }
Accesses a contiguous subrange of the collection's elements.
The accessed slice uses the same indices for the same elements as the
original collection uses. Always use the slice's `startIndex` property
instead of assuming that its indices start at a particular value.
This example demonstrates getting a slice of an array of strings, finding
the index of one of the strings in the slice, and then using that index
in the original array.
let streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
let streetsSlice = streets[2 ..< streets.endIndex]
print(streetsSlice)
// Prints "["Channing", "Douglas", "Evarts"]"
let index = streetsSlice.firstIndex(of: "Evarts") // 4
print(streets[index!])
// Prints "Evarts"
- Parameter bounds: A range of the collection's indices. The bounds of
the range must be valid indices of the collection.
- Complexity: O(1)
subscript(index: AttributedString.Index) -> UTF16.CodeUnit { get }
Accesses the element at the specified position.
The following example accesses an element of an array through its
subscript to print its value:
var streets = ["Adams", "Bryant", "Channing", "Douglas", "Evarts"]
print(streets[1])
// Prints "Bryant"
You can subscript a collection with any valid index other than the
collection's end index. The end index refers to the position one past
the last element of a collection, so it doesn't correspond with an
element.
- Parameter position: The position of the element to access. `position`
must be a valid index of the collection that is not equal to the
`endIndex` property.
- Complexity: O(1)