DataModelKit
DataModelKit is a simple and light framework to parse and read *.xcdatamodel files. It provides an API to navigate and explore DataModel
It's used in DataModelGen tools. (available soon)
Usage
Init a DataModel Object
import DataModelKit
static let path = "Project/Ressources/Sample.xcdatamodel"
let model = try? DataModel(with: DataModelKitTests.pathTest)
print(model.entities)
Installation
EasyRealm is available through CocoaPods, Carthage and SPM.
CocoaPods
use_frameworks!
pod "DataModelKit"
Carthage
github 'PoissonBallon/DataModelKit'
SPM
dependencies: [
.package(url: "https://github.com/PoissonBallon/DataModelKit.git", .upToNextMinor(from:"1.0.0"))
],
API
DataModelKit provide somes structs with attribute to exploite your DataModel
DataModel
It is the root object of your DataModel
public struct DataModel {
public let path: Struct /// Path of the original file.xcdatamodel
public let entities: [Entity] /// Parsed model's entities
public let documentVersion: String /// Version of file.xcdatamodel
public let systemVersion: String /// System version of file.xcdatamodel
public let minimumToolsVersion: String /// Minimum tools version of file.xcdatamodel
public let lastSavedToolsVersion: String /// Last saved tools version of file.xcdatamodel
}
Entity
public struct Entity {
public let name: String ///
public let userInfos: [UserInfo]
public let attributes: [Attribute]
public let relationships: [Relationship]
}
Relationship
public struct Relationship {
public let name: String
public let destination: String
public let inverse: String?
public let userInfo: [UserInfo]
public let toMany: Bool
public let toOne: Bool
public let optional: Bool
public let syncable: Bool
public let ordered: Bool
}
Attribute
public struct Attribute {
public let name: String
public let optional: Bool
public let indexed: Bool
public let defaultValue: String?
public let type: String
public let userInfos: [UserInfo]
}
Author
- PoissonBallon @poissonballon
License
DataModelKit is available under the MIT license. See the LICENSE file for more info.
Other
- Thanks to Adrien Groleas for logo
- Thanks to @trpl for text review