A Swift library for building type-safe forms from class models with UIKit integration.
ObjectForm is a Swift library that simplifies form creation in UIKit-based iOS apps by directly binding form rows to class model properties. It eliminates the complexity of other form libraries, providing a straightforward way to build and manage forms without external dependencies. The library focuses on type safety, custom validation, and seamless integration with existing UITableView code.
iOS developers working with UIKit who need to create forms bound to data models, particularly those seeking a lightweight, dependency-free solution for projects where simplicity and control are priorities. It's suitable for developers building apps like personal finance trackers or any data-entry interfaces.
Developers choose ObjectForm for its simplicity and direct model binding, avoiding the overhead of more complex form libraries. Its unique selling point is the combination of type safety, no external dependencies, and the ability to extend or customize rows and cells while working seamlessly with native UIKit components.
A simple yet powerful Swift library to build form for your class models.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses key-value coding to bind form rows directly to class properties, eliminating boilerplate code for data synchronization as shown in the FruitFormData example.
Each row type, like TypedRow, implements isValueMatchRowType to ensure values match expected types, preventing runtime errors from type mismatches.
Supports custom validation blocks per row, allowing any data integrity logic, demonstrated in the validation GIF and code snippet.
Works without any other libraries, making integration lightweight and straightforward, as emphasized in the README's philosophy and setup instructions.
Only provides basic row types (String, Double, Decimal, Date), so developers must create custom rows for other data types or advanced UI elements, increasing initial effort.
Designed exclusively for UIKit and UITableView, making it incompatible with SwiftUI-based projects without significant bridging or rewrite efforts.
Built-in rows and cells are not open for subclassing, forcing developers to build entirely new types for customization, as warned in the README's 'Make Your Own Row' section.