/Connections

A set of SwiftUI dynamic property wrappers that provide a more familiar API for accessing the Contacts framework. (iOS, watchOS, macOS)

Primary LanguageSwiftMIT LicenseMIT

ios watch mac

Connections

Also available as a part of my SwiftUI+ Collection – just add it to Xcode 13+

A set of SwiftUI dynamic property wrappers that provide a more familiar API for accessing the Contacts framework.

A full demo is included in this repo.

Features

  • Familiar API, matches CoreData's new FetchRequest APIs
  • Animation support
  • View's automatically update to reflect remote changes

Example

Containers

Fetch a list of containers:

@FetchContainerList private var containers

There are of course additional initializers that allow you to filter the result:

@FetchContainerList(
    forContact: contact.identifier
) private var containers

Groups

Fetch a list of groups:

@FetchGroupList private var groups

Similar to containers, you can also filter the results:

@FetchGroupList(
    inContainer: container.identifier
) private var groups

Contacts

@FetchContactList(
    keysToFetch: [
        .type,
        .givenName, .familyName,
        .organizationName,
        .phoneNumbers
    ],
    sortOrder: .givenName
) private var contacts

All property wrappers provide standard SwiftUI animation properties. If you don't include this value, the value defaults to .default

Installation

The code is packaged as a framework. You can install manually (by copying the files in the Sources directory) or using Swift Package Manager (preferred)

To install using Swift Package Manager, add this to the dependencies section of your Package.swift file:

.package(url: "https://github.com/SwiftUI-Plus/Connections.git", .upToNextMinor(from: "1.0.0"))

Other Packages

If you want easy access to this and more packages, add the following collection to your Xcode 13+ configuration:

https://benkau.com/packages.json