как передать параметр API и параметр находится в массиве - PullRequest
0 голосов
/ 06 декабря 2018

Как передать параметр массива

Параметр [{"id": 0, "followerId": 1030, "followId": 1033, "followerName": "string"," followName ":" string "," creationDate ":" string "," message ":" string "}] //how to solve this array

Функция API

class func postFollowers(params:[String: Any],success:@escaping([FollowingDataProvider]) -> Void, failure:@escaping (String) -> Void){
    var request =  RequestObject()
    request = Services.servicePostForFollower(param: params)

    APIManager.Singleton.sharedInstance.callWebServiceWithRequest(rqst: request, withResponse: { (response) in
        if (response?.isValid)!
        {
            //success()
            print(response?.object as! JSON)
            success(self.followingJSONarser(responseObject: response?.object as! JSON));

            //followingJSONarser(responseObject: response?.object as! JSON)
        }
        else
        {
            failure((response?.error?.description)!)
        }
    }, withError: {
        (error) in
        failure((error?.description)!)
    })
}

Анализ

static func followingJSONarser(responseObject:JSON) -> [FollowingDataProvider]{
    var dataProvider = [FollowingDataProvider]()
    let jsonDataa = responseObject["data"]
    print(jsonDataa)
    let newJSON = jsonDataa["data"].arrayValue
    print(newJSON)


    for item in newJSON{
        print(item)
        dataProvider.append(FollowingDataProvider(id: item["userId"].intValue, followerId: item["userId"].intValue, followingId: item["followingId"].intValue, followerName: item["userName"].stringValue, followingName: item["followingName"].stringValue, createdDate: item["createdDate"].stringValue, message: item["message"].stringValue))
    }
    return dataProvider
}`

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

После вашего кода, который вы пытаетесь проанализировать данные из API, вы можете использовать SwiftyJSON с Alamofire для создания HTTP-запроса (публиковать, получать, помещать, удалять и т. Д.)

Вы должныиспользуйте arrayObject вместо arrayValue

В вашем коде отсутствует правильное определение для анализа данных

static func followingJSONarser(responseObject:JSON) -> [FollowingDataProvider]{
    var dataProvider = [FollowingDataProvider]()
    var itemClass = [ItemClass]()
    let jsonDataa = responseObject["data"] as! Dictionary
    let newJSON = jsonDataa["data"].arrayObject as! Array

Теперь создайте класс dataModel для приведения данных к нему

class ItemsClass:NSObject{
    var id:Int = 0
    var followerId:Int = 0
    var followingId:Int = 0
    var followerName:String = ""
    var followingName:String = ""
    var createdDate:String = ""
    var message:String = ""

    init(data:JSON) {
        self.id = data["userId"].intValue
        self.followerId = data["userId"].intValue
        self.followingId = data["followingId"].intValue
        self.followerName  = data["userName"].stringValue
        self.followingName = data["followingName"].stringValue
        self.createdDate = data["createdDate"].stringValue
        self.message = data["message"].stringValue
    }

}
    for item in newJSON{
        dataProvider.append(itemClass)
    }
    return dataProvider
}`
0 голосов
/ 06 декабря 2018

Вы можете попробовать объединить SwiftyJson с Codable

struct Root: Codable {
  let id, followerID, followingID: Int
  let followerName, followingName, createdDate, message: String

 enum CodingKeys: String, CodingKey {
    case id
    case followerID = "followerId"
    case followingID = "followingId"
    case followerName, followingName, createdDate, message
 }
}

if let con = response?.object as? JSON {
   do {
       let itemData = try con.rawData() 
       let res  = try JSONDecoder().decode([Root].self, from: itemData) 
       print(res)
   catch {
      print(error)
   }
}

Также избегайте принудительных развёртываний с помощью json

response?.object as! JSON
...