I have following action in my smartcontract:
ACTION uploadfile1 (name creator, vector<uint8_t> content, string filename)
I'm trying to push action from my Swift application using following code:
struct uploadFile: Codable {
var creator: EosioName
var content: [Int8]
var filename: String
}
let testArr = Array(repeating: Int8(20), count: 10)
let data = uploadFile(creator: try! EosioName("tibackbone"),
content: testArr,
filename: theFileName)
rpcProvider = EosioRpcProvider(endpoint: endpoint)
guard let rpcProvider = rpcProvider else {
print("ERROR: No RPC provider found.")
return
}
let serializationProvider = EosioAbieosSerializationProvider()
let signatureProvider = try! EosioSoftkeySignatureProvider(privateKeys: privateKeys)
transactionFactory = EosioTransactionFactory(
rpcProvider: rpcProvider,
signatureProvider: signatureProvider,
serializationProvider: serializationProvider
)
let transaction = transactionFactory?.newTransaction()
let action = try! EosioTransaction.Action(
account: EosioName(accountName),
name: EosioName("uploadfile1"),
authorization: [EosioTransaction.Action.Authorization(
actor: EosioName(accountName),
permission: EosioName("active"))
],
data: data
)
transaction?.add(action: action)
transaction?.signAndBroadcast { result in
switch result {
case .failure (let error):
print("*** TRANSACTION ERROR")
print("---- ERROR SIGNING OR BROADCASTING TRANSACTION")
print(error)
print(error.reason)
case .success (let info):
if let transactionId = transaction?.transactionId {
print("Transaction ID \(transactionId)")
default: break
}
}
When i'm running this code i'm receiving following error:
*** TRANSACTION ERROR ---- ERROR SIGNING OR BROADCASTING TRANSACTION Error was encountered in SerializationProvider. Unable to pack json to bin. Expected string
Can anyone suggest me where i'm wrong and what i'm missing.
Thanks to everyone in advance!