RSDFormStepDataSource

public protocol RSDFormStepDataSource : class

RSDFormStepDataSource: the internal model for a table view controller. It provides the UITableViewDataSource, manages and stores answers provided thru user input, and provides an RSDResult with those answers upon request.

It also provides several convenience methods for saving or selecting answers, checking if all answers are valid, and retrieving specific model objects that may be needed by the ViewController.

The tableView data source is comprised of 3 objects:

  1. RSDTableSection: An object representing a section in the tableView. It has one or more RSDTableItemGroup objects.

  2. RSDTableItemGroup: An object representing a specific question supplied by RSDStep as an input field. Upon init(), the ItemGroup will create one or more RSDTableItem objects representing the answer options for the RSDInputField. The ItemGroup is responsible for storing/computing the answers for its RSDInputField.

  3. RSDTableItem: An object representing a specific answer option from the ItemGroup (RSDInputField), such as a Yes or No choice in a boolean question or a string or number that’s entered thru a text field. There will be one TableItem for each indexPath in the tableView.

  • itemGroup(with:) Extension method

    Retrieve the RSDTableItemGroup with a specific RSDInputField identifier.

    Declaration

    Swift

    public func itemGroup(with identifier: String) -> RSDTableItemGroup?

    Parameters

    identifier

    The identifier of the RSDInputField assigned to the item group.

    Return Value

    The requested RSDTableItemGroup, or nil if it cannot be found.

  • itemGroup(at:) Extension method

    Retrieve the ‘RSDTableItemGroup’ for a specific IndexPath.

    Declaration

    Swift

    public func itemGroup(at indexPath: IndexPath) -> RSDTableItemGroup?

    Parameters

    indexPath

    The index path that represents the item group in the table view.

    Return Value

    The requested RSDTableItemGroup, or nil if it cannot be found.

  • nextItem(after:) Extension method

    Retrieve the next item group after the current one at the given index path.

    Declaration

    Swift

    public func nextItem(after indexPath: IndexPath) -> RSDTableItemGroup?

    Parameters

    indexPath

    The index path that represents the item group in the table view.

    Return Value

    The next RSDTableItemGroup or nil if this was the last item.

  • indexPath(for:) Extension method

    Retrieve the index path that points at the given item group.

    Declaration

    Swift

    public func indexPath(for itemGroup: RSDTableItemGroup) -> IndexPath?

    Parameters

    itemGroup

    The item group.

    Return Value

    The index path for the given item group or nil if not found.

  • saveAnswer(_:at:) Extension method

    Save an answer for a specific IndexPath.

    Throws

    RSDInputFieldError if the answer is invalid.

    Declaration

    Swift

    public func saveAnswer(_ answer: Any, at indexPath: IndexPath) throws

    Parameters

    answer

    The object to be save as the answer.

    indexPath

    The IndexPath that represents the RSDTableItem in the table view.

  • selectAnswer(item:at:) Extension method

    Select or deselect the answer option for a specific IndexPath.

    Throws

    RSDInputFieldError if the selection is invalid.

    Declaration

    Swift

    public func selectAnswer(item: RSDChoiceTableItem, at indexPath: IndexPath) throws

    Parameters

    indexPath

    The IndexPath that represents the RSDTableItem in the table view.

  • allAnswersValid() Extension method

    Determine if all answers are valid. Also checks the case where answers are required but one has not been provided.

    Declaration

    Swift

    public func allAnswersValid() -> Bool

    Return Value

    A Bool indicating if all answers are valid.

  • tableItem(at:) Extension method

    Retrieve the RSDTableItem for a specific IndexPath.

    Declaration

    Swift

    public func tableItem(at indexPath: IndexPath) -> RSDTableItem?

    Parameters

    indexPath

    The IndexPath that represents the table item in the table view.

    Return Value

    The requested RSDTableItem, or nil if it cannot be found.