Dictionary

extension Dictionary
  • Creates a new dictionary whose keys are the groupings returned by the given closure and whose values are arrays of the elements that returned each key.

    // [Int64: [Player]]
    let cursor = try Player.fetchCursor(db)
    let dictionary = try Dictionary(grouping: cursor, by: { $0.teamID })
    

    Declaration

    Swift

    public init<C: Cursor>(grouping cursor: C, by keyForValue: (C.Element) throws -> Key)
    throws where Value == [C.Element]

    Parameters

    cursor

    A cursor of values to group into a dictionary.

    keyForValue

    A closure that returns a key for each element in the cursor.

  • Creates a new dictionary whose keys are the groupings returned by the given closure and whose values are arrays of the elements that returned each key.

    // [Int64: [Player]]
    let cursor = try Player.fetchCursor(db)
    let dictionary = try Dictionary(
        minimumCapacity: 100,
        grouping: cursor,
        by: { $0.teamID })
    

    Declaration

    Swift

    public init<C: Cursor>(minimumCapacity: Int, grouping cursor: C, by keyForValue: (C.Element) throws -> Key)
    throws where Value == [C.Element]

    Parameters

    minimumCapacity

    The minimum number of key-value pairs that the newly created dictionary should be able to store without reallocating its storage buffer.

    cursor

    A cursor of values to group into a dictionary.

    keyForValue

    A closure that returns a key for each element in the cursor.

  • Creates a new dictionary from the key-value pairs in the given cursor.

    You use this initializer to create a dictionary when you have a cursor of key-value tuples with unique keys. Passing a cursor with duplicate keys to this initializer results in a fatal error.

    // [Int64: Player]
    let cursor = try Player.fetchCursor(db).map { ($0.id, $0) }
    let playerByID = try Dictionary(uniqueKeysWithValues: cursor)
    

    Precondition

    The cursor must not have duplicate keys.

    Declaration

    Swift

    public init<C: Cursor>(uniqueKeysWithValues keysAndValues: C)
    throws where C.Element == (Key, Value)

    Parameters

    keysAndValues

    A cursor of key-value pairs to use for the new dictionary. Every key in keysAndValues must be unique.

  • Creates a new dictionary from the key-value pairs in the given cursor.

    You use this initializer to create a dictionary when you have a cursor of key-value tuples with unique keys. Passing a cursor with duplicate keys to this initializer results in a fatal error.

    // [Int64: Player]
    let cursor = try Player.fetchCursor(db).map { ($0.id, $0) }
    let playerByID = try Dictionary(
        minimumCapacity: 100,
        uniqueKeysWithValues: cursor)
    

    Precondition

    The cursor must not have duplicate keys.

    Declaration

    Swift

    public init<C: Cursor>(minimumCapacity: Int, uniqueKeysWithValues keysAndValues: C)
    throws where C.Element == (Key, Value)

    Parameters

    minimumCapacity

    The minimum number of key-value pairs that the newly created dictionary should be able to store without reallocating its storage buffer.

    keysAndValues

    A cursor of key-value pairs to use for the new dictionary. Every key in keysAndValues must be unique.