SwiftAirmen: FAA Airman Database parser

SwiftAirmen parses the
FAA Airmen Certification Database
into native Swift structs that are tightly defined with no data weirdness. You
must download a copy of the airmen database in CSV format from that website to
use with this library.


This library was built for use with Swift 5.5 or newer on any platform or


Use Swift Package Manager to include SwiftAirmen in your project:

let package = Package(
    // [...]
    dependencies: [
        .package(url: "https://github.com/RISCfuture/SwiftAirmen", branch: "master")
    // [...]

Be sure to include SwiftAirmen as a dependency in your .target entry.


To parse airmen records, create an instance of Parser and give it the path to
your downloaded CSV records:

import SwiftAirmen

let parser = SwiftAirmen.Parser(directory: yourDirectoryURL)
try parser.parse(callback: { airmen in
    // your code here
}, errorCallback: { error in
    // your error handler here

parse executes asynchronously and calls your callback when parsing is
complete. The airmen block parameter is a dictionary mapping airmen IDs (such
as A4760216) to Airman records.

An Airman record contains information about the airman and their certificates:

let airman = airmen["A4760216"]
for cert in airman.certificates {
    guard case let .pilot(level, ratings, centerlineThrust) = cert else { continue }
    if level == .airlineTransport {
        // your code continues

If you wish to track the progress of the parsing operation, parse
returns a Progress instance that you can use. Any parsing errors are
non-interruptive and will be given to you in the error callback, which is
invoked once per parse error. The final airmen parameter passed to the
callback includes those records that were parsed without error.

Parsing is an expensive operation. See the Parser class for methods that will
allow you to parse a subset of the airmen certification data.


View Github