var detailsDictionaryValue: [String: Any] {
var value: [String: Any] = [:]
let details = self.transactionDetails
value[#keyPath(MOTransactionDetails.id)] = self.id
value[#keyPath(MOTransactionDetails.sourceSystemTransactionRef)] = details.sourceSystemTransactionRef
value[#keyPath(MOTransactionDetails.transactionDate)] = details.transactionDate
value[#keyPath(MOTransactionDetails.accountAmountValue)] = Int64(details.accountAmount.amount)
value[#keyPath(MOTransactionDetails.accountAmountCurrencyCode)] = details.accountAmount.currency.currencyCode
if let commission = details.commissionAmount {
value[#keyPath(MOTransactionDetails.commissionAmountValue)] = Int64(commission.amount)
value[#keyPath(MOTransactionDetails.commissionAmountCurrencyCode)] = commission.currency.currencyCode
} else {
value[#keyPath(MOTransactionDetails.commissionAmountValue)] = NSNull()
value[#keyPath(MOTransactionDetails.commissionAmountCurrencyCode)] = NSNull()
}
if let balanceAfter = details.balanceAfter {
value[#keyPath(MOTransactionDetails.balanceAfterValue)] = Int64(balanceAfter.amount)
value[#keyPath(MOTransactionDetails.balanceAfterCurrencyCode)] = balanceAfter.currency.currencyCode
} else {
value[#keyPath(MOTransactionDetails.balanceAfterValue)] = NSNull()
value[#keyPath(MOTransactionDetails.balanceAfterCurrencyCode)] = NSNull()
}
if let ownAmount = details.ownAmount {
value[#keyPath(MOTransactionDetails.ownAmountValue)] = Int64(ownAmount.amount)
value[#keyPath(MOTransactionDetails.ownAmountCurrencyCode)] = ownAmount.currency.currencyCode
} else {
value[#keyPath(MOTransactionDetails.ownAmountValue)] = NSNull()
value[#keyPath(MOTransactionDetails.ownAmountCurrencyCode)] = NSNull()
}
if let cashback = details.cashback {
value[#keyPath(MOTransactionDetails.cashbackValue)] = Int64(cashback.amount)
value[#keyPath(MOTransactionDetails.cashbackCurrencyCode)] = cashback.currency.currencyCode
} else {
value[#keyPath(MOTransactionDetails.cashbackValue)] = NSNull()
value[#keyPath(MOTransactionDetails.cashbackCurrencyCode)] = NSNull()
}
if let exchangeRate = details.exchangeRate {
value[#keyPath(MOTransactionDetails.exchangeRate)] = exchangeRate
} else {
value[#keyPath(MOTransactionDetails.exchangeRate)] = NSNull()
}
if let comment = details.comment {
value[#keyPath(MOTransactionDetails.comment)] = comment
} else {
value[#keyPath(MOTransactionDetails.comment)] = NSNull()
}
if let structuredReference = details.structuredReference {
value[#keyPath(MOTransactionDetails.structuredReference)] = structuredReference
} else {
value[#keyPath(MOTransactionDetails.structuredReference)] = NSNull()
}
// requisite
let requisite = details.cardAccountRequisite
value[#keyPath(MOTransactionDetails.accountNumber)] = requisite.accountNumber
value[#keyPath(MOTransactionDetails.accountType)] = requisite.accountType.rawValue
if let accountOwnerName = requisite.accountOwnerName {
value[#keyPath(MOTransactionDetails.accountOwnerName)] = accountOwnerName
} else {
value[#keyPath(MOTransactionDetails.accountOwnerName)] = NSNull()
}
if let cardNumber = requisite.cardNumber {
value[#keyPath(MOTransactionDetails.cardNumber)] = cardNumber
} else {
value[#keyPath(MOTransactionDetails.cardNumber)] = NSNull()
}
if let embossingName = requisite.embossingName {
value[#keyPath(MOTransactionDetails.embossingName)] = embossingName
} else {
value[#keyPath(MOTransactionDetails.embossingName)] = NSNull()
}
return value
}
// This solution solves the problem! On iOS 16 there is no such problem, everything works correctly.
Post
Replies
Boosts
Views
Activity
extension MOTransactionDetails {
@nonobjc public class func fetchRequest() -> NSFetchRequest<MOTransactionDetails> {
return NSFetchRequest<MOTransactionDetails>(entityName: "MOTransactionDetails")
}
@NSManaged public var accountAmountCurrencyCode: String?
@NSManaged public var accountAmountValue: Int64
@NSManaged public var accountNumber: String?
@NSManaged public var accountOwnerName: String?
@NSManaged public var accountType: String?
@NSManaged public var balanceAfterCurrencyCode: String?
@NSManaged public var balanceAfterValue: Int64
@NSManaged public var cardNumber: String?
@NSManaged public var cashbackCurrencyCode: String?
@NSManaged public var cashbackValue: Int64
@NSManaged public var comment: String?
@NSManaged public var commissionAmountCurrencyCode: String?
@NSManaged public var commissionAmountValue: Int64
@NSManaged public var embossingName: String?
@NSManaged public var exchangeRate: Double
@NSManaged public var id: String?
@NSManaged public var ownAmountCurrencyCode: String?
@NSManaged public var ownAmountValue: Int64
@NSManaged public var sourceSystemTransactionRef: String?
@NSManaged public var structuredReference: String?
@NSManaged public var transactionDate: Date?
@NSManaged public var actions: NSSet?
@NSManaged public var transactionItem: MOTransactionItem?
}