Skip to content

Commit

Permalink
Merge branch 'support-list-strings' into dev
Browse files Browse the repository at this point in the history
  • Loading branch information
camdenfullmer committed Jan 8, 2021
2 parents df90fd6 + 6ab641e commit 6b1378e
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 0 deletions.
2 changes: 2 additions & 0 deletions Sources/CloudyKit/CloudKitWebServices.swift
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,8 @@ struct CKWSRecordFieldValue: Codable {
} else if let value = try? container.decode([String].self, forKey: .value), self.type == "BYTES_LIST" {
let datas = value.compactMap({ Data(base64Encoded: $0) })
self.value = .bytesList(datas)
} else if let value = try? container.decode([String].self, forKey: .value) {
self.value = .stringList(value)
} else if let value = try? container.decode(CKWSReferenceDictionary.self, forKey: .value) {
self.value = .reference(value)
} else if let value = try? container.decode(Double.self, forKey: .value) {
Expand Down
2 changes: 2 additions & 0 deletions Sources/CloudyKit/URLSession+Helpers.swift
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,8 @@ extension NetworkSession {
fields[fieldName] = CKWSRecordFieldValue(value: .number(value), type: nil)
case let value as String:
fields[fieldName] = CKWSRecordFieldValue(value: .string(value), type: nil)
case let value as Array<String>:
fields[fieldName] = CKWSRecordFieldValue(value: .stringList(value), type: nil)
case _ as CKAsset:
guard let dictionary = assetUploadResponses.first(where: { $0.0 == fieldName })?.1.singleFile else {
if CloudyKitConfig.debug {
Expand Down
3 changes: 3 additions & 0 deletions Tests/CloudyKitTests/CKDatabaseTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ final class CKDatabaseTests: XCTestCase {
"bytes": {"value": "AAECAwQ=", "type": "BYTES"},
"bytesList": {"value": ["AAECAwQ="], "type": "BYTES_LIST"},
"double": {"value": 1.234},
"stringsList": {"value": ["foo", "bar"], "type": "STRING_LIST"},
"reference": {
"value": {
"recordName": "D27CC4CB-CC49-4710-9370-418A0E97D71C",
Expand Down Expand Up @@ -74,6 +75,7 @@ final class CKDatabaseTests: XCTestCase {
let data = Data([0, 1, 2, 3, 4])
record["bytes"] = data
record["bytesList"] = [data]
record["stringsList"] = ["foo", "bar"]
record["double"] = 1.234
record["reference"] = reference
record["dateTime"] = dateTime
Expand All @@ -95,6 +97,7 @@ final class CKDatabaseTests: XCTestCase {
XCTAssertEqual(24, record?["height"] as? Int)
XCTAssertEqual(Data([0, 1, 2, 3, 4]), record?["bytes"] as? Data)
XCTAssertEqual([Data([0, 1, 2, 3, 4])], record?["bytesList"] as? [Data])
XCTAssertEqual(["foo","bar"], record?["stringsList"] as? [String])
XCTAssertEqual(1.234, record?["double"] as? Double)
XCTAssertEqual(reference, record?["reference"] as? CloudyKit.CKRecord.Reference)
XCTAssertEqual(dateTime, record?["dateTime"] as? Date)
Expand Down

0 comments on commit 6b1378e

Please sign in to comment.