AtlasX Dynamic Model
AtlasX Dynamic Model สามารถเพิ่มลดจำนวน Properties ได้อย่างอิสระเพื่อ Support Model ที่มีการเปลี่ยนแปลง Properties อยู่บ่อยครั้ง
Operation
เครื่องหมายสำหรับการสร้าง Condition
enum Operation {
case equal(value: Any?)
case notEqual(value: Any?)
case moreThanInt(value: Int)
case moreThanDouble(value: Double)
case moreThanAndEqualInt(value: Int)
case moreThanAndEqualDouble(value: Double)
case lessThanInt(value: Int)
case lessThanDouble(value: Double)
case lessThanAndEqualInt(value: Int)
case lessThanAndEqualDouble(value: Double)
case contains(value: String)
}
| Name | Description |
|---|
| equal | เครื่องหมาย == |
| notEqual | เครื่องหมาย != |
| moreThanInt | เครื่องหมาย > ที่ใช้สำหรับ Integer |
| moreThanDouble | เครื่องหมาย > ที่ใช้สำหรับ Double |
| moreThanAndEqualInt | เครื่องหมาย >= ที่ใช้สำหรับ Integer |
| moreThanAndEqualDouble | เครื่องหมาย >= ที่ใช้สำหรับ Double |
| lessThanInt | เครื่องหมาย < ที่ใช้สำหรับ Integer |
| lessThanDouble | เครื่องหมาย < ที่ใช้สำหรับ Double |
| lessThanAndEqualInt | เครื่องหมาย <= ที่ใช้สำหรับ Integer |
| lessThanAndEqualDouble | เครื่องหมาย <= ที่ใช้สำหรับ Double |
| contains | การ Contains String |
Properties
| Name | Description | Type | Default |
|---|
| jsonObject | String Json ของ Model | Optional(String) | null |
Initial
required convenience public init(jsonObject: [String: Any?])
| Name | Description | Type | | — | — | — | — | | jsonObject | Model ที่ต้องการเก็บแบบ Dynamic | Dictionary |
Example
class YourDynamicModels: AtlasXDynamicModel {
required convenience init(jsonObject: [String: Any?]) {
self.init(jsonObject: jsonObject)
}
}
let data = ["id": 1, "KeyA": "A"]
let yourDynamicModel = YourDynamicModels(jsonObject: data)
<em>// Add your model to Database</em>
...
Method Overview
| Name | Description | Return |
|---|
| toJsonObject() | การดึงข้อมูลจาก Model ให้ออกมาในรูป Dictionary | Optional(Dictionary) |
| update() | การ Update ข้อมูลใน Model | void |
| checkData() | Condition สำหรับการ Filter ข้อมูลใน Model | Boolean |
Method Details
func toJsonObject() -> [String: Any?]?
การดึงข้อมูลจาก Model ให้ออกมาในรูป Dictionary
Returns
| Type | Description |
|---|
| Optional(Dictionary) | Return Dictionary ของ Model |
func checkData(forKey key: String, operation: Operation) -> Bool
Condition สำหรับการ Filter ข้อมูลใน Model
Parameters
| Name | Description | Type |
|---|
| forKey | Key ที่ต้องการสร้าง Condition | String |
| operation | Operation ของ Condition | Operation |
Returns
| Type | Description |
|---|
| Boolean | Return Condition |
Example
let yourDynamicModels: [YourDynamicModels]
yourDynamicModels.filter { item in
return item.checkData(forKey: "id", operation: .equal(value: 1))
}
func update(newJsonObject object: [String: Any?], completion: ((Error?, [String: Any?]?) -> Void)?)
การ Update ข้อมูลใน Model โดยจะทำการ Merge Model เข้าด้วยกันและยึดค่าของ Model ที่เข้ามา Update เสมอ
Parameters
| Name | Description | Type |
|---|
| newJsonObject | ข้อมูลใหม่ที่ต้องการ Update | Dictionary |
| completion | Callback เมื่อ Update ข้อมูลสำเร็จหรือไม่สำเร็จ | Completion |
Example Result
let oldModel = ["KeyA": "A", "KeyB": "B"]
let updateModel = ["KeyB": "B1", "KeyC": "C"]
<em>// After update model</em>
let resultModel = ["KeyA": "A", "KeyB": "B1", "KeyC": "C"]