diff --git a/BackendlessSwift.podspec b/BackendlessSwift.podspec index db24fdb..7b1a3fe 100644 --- a/BackendlessSwift.podspec +++ b/BackendlessSwift.podspec @@ -1,8 +1,8 @@ Pod::Spec.new do |s| s.name = 'BackendlessSwift' s.module_name = 'Backendless' - s.version = '7.0.3' - s.source = { :git => 'https://github.com/Backendless/Swift-SDK.git', :tag => '7.0.3' } + s.version = '7.0.4' + s.source = { :git => 'https://github.com/Backendless/Swift-SDK.git', :tag => '7.0.4' } s.license = { :type => 'MIT', :text => 'Copyright (c) 2013-2023 by Backendless Corp' } s.homepage = 'http://backendless.com' s.authors = { 'Mark Piller' => 'mark@backendless.com', 'Olha Danylova' => 'olha.danylova@backendlessmail.com' } diff --git a/CHANGELOG.md b/CHANGELOG.md index d29530b..660e143 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # RELEASE HISTORY +### 7.0.4 / October 17, 2023 +* Fixed an issue when excluding some properties of native types + ### 7.0.3 / October 12, 2023 * Added an ability to exlude custom class fields from interacting with database: ``` diff --git a/Sources/SwiftSDK/BackendlessRequestManager/BackendlessRequestManager.swift b/Sources/SwiftSDK/BackendlessRequestManager/BackendlessRequestManager.swift index 8b57d9a..515c51c 100644 --- a/Sources/SwiftSDK/BackendlessRequestManager/BackendlessRequestManager.swift +++ b/Sources/SwiftSDK/BackendlessRequestManager/BackendlessRequestManager.swift @@ -84,7 +84,7 @@ class BackendlessRequestManager { } else { if var params = parameters as? [String : Any] { - params = excludeProperties(properties: params) + params = prepareTransactionsWithMappings(properties: params) for (key, value) in params { if let dateValue = value as? Date { params[key] = DataTypesUtils.shared.dateToInt(date: dateValue) @@ -196,29 +196,8 @@ class BackendlessRequestManager { restMethod.removeLast() } - private func excludeProperties(properties: [String : Any]) -> [String : Any] { + private func prepareTransactionsWithMappings(properties: [String : Any]) -> [String : Any] { var resultProperties = properties - let restMethodComponents = restMethod.split(separator: "/").map { String($0) } - - for (tableName, fields) in Backendless.shared.data.excludeProperties { - var tableName = tableName - let propertyMappings = Mappings.shared.getColumnToPropertyMappings(className: tableName) - if let originalTableName = Mappings.shared.tableToClassMappings.getKey(forValue: tableName) { - tableName = originalTableName - } - if restMethodComponents.contains(tableName) { - for field in fields { - var field = field - if !propertyMappings.isEmpty, - let propertyName = propertyMappings.getKey(forValue: field) { - field = propertyName - } - resultProperties[field] = nil - } - } - } - - // Transactions if resultProperties.keys.contains("operations"), resultProperties.keys.contains("isolationLevelEnum"), let operations = properties["operations"] as? [[String : Any]] { @@ -226,40 +205,6 @@ class BackendlessRequestManager { for operation in operations { var operation = operation - if var payload = operation["payload"] as? [String : Any] { - for (tableName, fields) in Backendless.shared.data.excludeProperties { - let propertyMappings = Mappings.shared.getColumnToPropertyMappings(className: tableName) - for field in fields { - var field = field - if !propertyMappings.isEmpty, - let propertyName = propertyMappings.getKey(forValue: field) { - field = propertyName - } - payload[field] = nil - } - } - operation["payload"] = payload - } - // bulk operations - else if let payloads = operation["payload"] as? [[String : Any]] { - var resultPayloads = [[String : Any]]() - for payload in payloads { - var payload = payload - for (tableName, fields) in Backendless.shared.data.excludeProperties { - let propertyMappings = Mappings.shared.getColumnToPropertyMappings(className: tableName) - for field in fields { - var field = field - if !propertyMappings.isEmpty, - let propertyName = propertyMappings.getKey(forValue: field) { - field = propertyName - } - payload[field] = nil - } - } - resultPayloads.append(payload) - } - operation["payload"] = resultPayloads - } if var tableName = operation["table"] as? String, let originalTableName = Mappings.shared.tableToClassMappings.getKey(forValue: tableName) { tableName = originalTableName @@ -268,7 +213,6 @@ class BackendlessRequestManager { resultOperations.append(operation) } resultProperties["operations"] = resultOperations - } return resultProperties } diff --git a/Sources/SwiftSDK/Persistence/PersistenceHelper.swift b/Sources/SwiftSDK/Persistence/PersistenceHelper.swift index a7381f2..73502e6 100644 --- a/Sources/SwiftSDK/Persistence/PersistenceHelper.swift +++ b/Sources/SwiftSDK/Persistence/PersistenceHelper.swift @@ -20,6 +20,7 @@ */ import Foundation +//import UIKit class PersistenceHelper { @@ -173,6 +174,7 @@ class PersistenceHelper { var entityDictionary = [String: Any]() let resultClass = type(of: entity) as! NSObject.Type + var outCount : UInt32 = 0 if let properties = class_copyPropertyList(resultClass.self, &outCount) { @@ -181,57 +183,65 @@ class PersistenceHelper { for i : UInt32 in 0..