Skip to content

0xLet/DataObject

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

17 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

DataObject

DataObject(Any)

Basic Example

let obj = DataObject("init_value")
    .set(variable: "SomeValue", value: "qwerty")
    .set(variable: "nil", value: nil)

XCTAssertEqual(obj.value(), "init_value")
XCTAssertEqual(obj.SomeValue.value(), "qwerty")
XCTAssertEqual(obj.nil, DataObject())

SURL JSON Example

"https://jsonplaceholder.typicode.com/users/7".url?
    .get { (obj) in
        print(obj.variables.keys) // [AnyHashable("response"), AnyHashable("data")]
        print(obj.data)
}
JSON
{
  "id": 7,
  "name": "Kurtis Weissnat",
  "username": "Elwyn.Skiles",
  "email": "[email protected]",
  "address": {
    "street": "Rex Trail",
    "suite": "Suite 280",
    "city": "Howemouth",
    "zipcode": "58804-1099",
    "geo": {
      "lat": "24.8918",
      "lng": "21.8984"
    }
  },
  "phone": "210.067.6132",
  "website": "elvis.io",
  "company": {
    "name": "Johns Group",
    "catchPhrase": "Configurable multimedia task-force",
    "bs": "generate enterprise e-tailers"
  }
}

Output: obj.data

DataObject {
|    Variables
|    * id: 7 (__NSCFNumber)
|    * value: 500 bytes (Data)
|    * address: {
    city = Howemouth;
    geo =     {
        lat = "24.8918";
        lng = "21.8984";
    };
    street = "Rex Trail";
    suite = "Suite 280";
    zipcode = "58804-1099";
} (__NSDictionaryI)
|    * email: Telly.Hoeger@billy.biz (__NSCFString)
|    * json: {
  "id": 7,
  "name": "Kurtis Weissnat",
  "username": "Elwyn.Skiles",
  "email": "[email protected]",
  "address": {
    "street": "Rex Trail",
    "suite": "Suite 280",
    "city": "Howemouth",
    "zipcode": "58804-1099",
    "geo": {
      "lat": "24.8918",
      "lng": "21.8984"
    }
  },
  "phone": "210.067.6132",
  "website": "elvis.io",
  "company": {
    "name": "Johns Group",
    "catchPhrase": "Configurable multimedia task-force",
    "bs": "generate enterprise e-tailers"
  }
} (String)
|    * website: elvis.io (NSTaggedPointerString)
|    * username: Elwyn.Skiles (__NSCFString)
|    * company: {
    bs = "generate enterprise e-tailers";
    catchPhrase = "Configurable multimedia task-force";
    name = "Johns Group";
} (__NSDictionaryI)
|    * phone: 210.067.6132 (__NSCFString)
|    * name: Kurtis Weissnat (__NSCFString)
}

WTV Example

"https://jsonplaceholder.typicode.com/users/7".url?
    .get { (obj) in
        print(obj.data.wtv(named: "name")!)
}

Output: obj.data.wtv(named: "name")

DataObject.variables["company"]["name"] ๐Ÿ‘‰ FOUND: (label: Optional("name"), value: Johns Group)
DataObject.variables["name"] ๐Ÿ‘‰ FOUND: (label: Optional("name"), value: Kurtis Weissnat)