Ios Alamofire完成处理程序问题
我有一个POST请求,其中包含我希望接收的某些数据。但是,当我使用Ios Alamofire完成处理程序问题,ios,swift2,realm,alamofire,Ios,Swift2,Realm,Alamofire,我有一个POST请求,其中包含我希望接收的某些数据。但是,当我使用responseArray时,会抛出此错误 json数据为零 但是当我使用responseJSON时,一切都会很好。为什么会这样 此代码不起作用: Alamofire.request(.POST, Data.todoEndpoint, parameters: parameters) .responseArray { (response: Response<[Particulars], NSError>)
responseArray
时,会抛出此错误
json数据为零
但是当我使用responseJSON
时,一切都会很好。为什么会这样
此代码不起作用:
Alamofire.request(.POST, Data.todoEndpoint, parameters: parameters)
.responseArray { (response: Response<[Particulars], NSError>) in
print(response.request)
print(response.response)
print(response.result)
if let result = response.result.value
{
do{
print(Realm.Configuration.defaultConfiguration.fileURL)
let realm = try Realm()
realm.add(result, update: true)
}
catch let err as NSError {
print("Error with realm: " + err.localizedDescription)
}
}
else
{
print("JSON data is nil.")
}
}
我需要responseArray
,这样我就可以拥有(response:response)
并将我的JSON响应存储到域中
更新
这是我要连接到的详细信息类。我正试图根据本文将我的JSON对象映射到领域
更新2
我的完成处理程序在responseObject
上运行正常,但我的realm.add xxx
抛出了此错误
无法将“String”类型的值转换为预期的参数类型“Object”
我的代码可以在这里找到(第19-25行)Alamofire页面显示了如何处理响应,但没有列出responseArray方法 您可以使用responseJSON获取JSON并将其转换为所需的数组。它看起来像这样(根据JSON响应对此进行更改) 您的详细信息中必须有一个初始值设定项,该初始值设定项将根据提供的JSON进行初始化 更新: realmadd方法获取从对象扩展的类的实例 对象是领域提供的类。因此,您可能需要进一步阅读文档 你应该这样做
realm.add(particulars, updated:true)
嗨@Anirudh,我知道,但是根据我在网上找到的这个教程(见更新的帖子),这就是他们使用的(responseArray)也是我使用细节的原因,是为了连接到我的细节类。你能更新你的JSON的整个结构吗?。您的JSON是一个包含细节数组的对象,还是只是一个细节数组。i、 e是像{particualrs:[{name:,api_令牌:},{name:,api_令牌:}]}或[{name:,api_令牌:},{name:,api_令牌:}]这样的外部结构,这是整个JSON响应。。这是一系列的细节。问题是,我想将我的整个JSON响应添加到realmt您发布的JSON似乎不正确。它必须是[{},{}]而不是[name:,…]。当您想存储整个JSON时,您想将纯JSON文本存储到realm?中?。如果是这样,您可以将JSON响应作为字符串获取并存储。您根本不需要responseArray调用。我正在寻找的是将名称和令牌之类的数据传递到我的领域数据库的名称和令牌列中。这是否意味着我不必反复翻阅字典?
import Foundation
import RealmSwift
import ObjectMapper
class Particulars: Object, Mappable {
dynamic var name = ""
dynamic var email = ""
dynamic var id = ""
dynamic var profilePicture = ""
dynamic var username = ""
dynamic var apiToken = ""
override static func primaryKey() -> String? {
return "id"
}
//Impl. of Mappable protocol
required convenience init?(_ map: Map) {
self.init()
}
func mapping(map: Map) {
id <- map["id"]
name <- map["name"]
email <- map["email"]
profilePicture <- map["profile_picture"]
username <- map["username"]
apiToken <- map["api_token"]
}
}
[
"name" : "Jonny Walker",
"api_token" : "qwertyuiop1234567890",
"profile_picture" : "http:default_profile_picture.jpg",
"id" : 10,
"email" : "jwalker@gmail.com",
"username" : "jonny"
]
Alamofire.request(.POST, Data.todoEndpoint, parameters: parameters)
.responseJSON { response in
guard response.result.isSuccess else
{
//handle error
return
}
guard let value = response.result.value as? [String: AnyObject],
particularsArrayJson = value["particulars"] as? [[String: AnyObject]]
else{
//Malformed JSON, handle this case
}
var particulars = [Particulars]()
for particularsDict in paricularsArrayJson{
particulars.append(Pariculars(json:particularsDict))
}
}
realm.add(particulars, updated:true)