我在一个Swift项目中使用佩米尔的iOS SDK。
我可以成功地创建事务,它们已成功地在PayMill中注册。创建事务后,使用阿拉莫火将事务数据传递给服务器的代码如下
//... PayMill SDK initialization here...
PMManager.transactionWithMethod(paymentMethod, parameters: paymentParameters, consumable: true,
success: { (transaction) -> Void in
println("successfully created transaction: \(transaction)")
// pass the data to my Server using Alamofire
// Alamofire POST here...
}, failure: { (error) -> Void in
println("found error: \(error)")
})变量transaction为PMTransaction类型。有关PMTransaction的更多信息,请参见此处。
Alamofire给出了以下错误:
2015-02-05 14:56:44.434 MyApp[4070:727012] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (PMTransaction)'如何将其转换为,例如,NSObject或任何其他数据类型,以便将数据正确地发送到我的服务器?
在将dataObject传递给Alamofire之前,我尝试使用NSObject类型声明它:
let dataObject:NSObject = transaction as NSObject但这似乎对阿拉莫火没有任何影响。
为了进行测试,我尝试使用一个泛型对象,在通过Alamofire将它发送到我的服务器后,它成功地存储在我的数据库中,因此问题在于外部数据类型PMTransaction。
非常感谢您的建议,如果需要的话,我很乐意发布更多的信息。
发布于 2015-02-05 15:40:20
我找到了一种更手工的方法来解决我的问题。见下文:
var dataObject = [
"id":"\(transaction.id)",
"description":"\(transaction.description)",
"amount":"\(transaction.amount)",
"origin_amount":"\(transaction.origin_amount)",
"currency":"\(transaction.currency)",
"status":"\(transaction.status)",
"livemode":"\(transaction.livemode)",
"created_at":"\(transaction.created_at)",
"updated_at":"\(transaction.updated_at)",
"response_code":"\(transaction.response_code)",
]如果有人能想出一个更好的方法来转换PMTransaction,请添加您的解决方案,我将接受您的回答。
https://stackoverflow.com/questions/28346265
复制相似问题