Data Conversion in the SDK

This topic describes how the data formats used with key-value pairs are converted when the Kii Cloud SDK reads key-value pairs.

You can skip this topic if you are using only one platform (e.g. your application is only released for iOS) and if your application does not have any data format casting (e.g. all values written as "int" are read as "int").

The Kii Cloud SDK for iOS provides separate APIs for reading data of a basic type such as NSString and NSNumber and that of the GeoPoint (geolocation) type. There are dedicated methods for setting and getting a GeoPoint object. This topic explains how to get data of any of the other data types with the getForKey(_:) method.

The getForKey(_:) method gets a value from a JSON document and returns it as a value of the id type. A value of the id type is cast to a specific data type such as NSString, NSNumber, NSArray, and NSDictionary according to its data type in the JSON document. Unlike on the other platforms such as Android, the SDK for iOS does not throw an error when reading data because it does not forcibly read data assuming a certain data type.

You can distinguish between a case that a specified key does not exist and a case that a specified key has a null value. Nil is returned for the former case and NSNull is returned for the latter case.

Example of data conversion

Suppose the following JSON document is stored in a KiiObject. The next table shows how the getForKey(_:) method processes the key-value pairs.

{
  "value1": "abc",
  "value2": "123",
  "value3": "123x456",
  "value4": {"a":"b"},
  "value5": null,
  "value6": [1, 2, 3],
  "value7": 123,
  "value8": 8589934592,
  "value9": 456.789,
  "value10": true
}
Key Value A return from getForKey(_:) Notes
value1 "abc" abc (NSString)
value2 "123" 123 (NSString)
value3 "123x456" 123x456 (NSString)
value4 {"a":"b"} {a=b} (NSDictionary)
value5 null NSNull
value6 [1,2,3] {1,2,3} (NSArray)
value7 123 123 (NSNumber) As the value for the intValue property
value8 8589934592 8589934592 (NSNumber) As the value for the int64Value property
value9 456.789 456.789 (NSNumber) As the value for the doubleValue property
value10 true YES (NSNumber) As the value for the boolValue property
Non-existing key n/a nil