Ios 循环从服务接收的阵列

Ios 循环从服务接收的阵列,ios,arrays,swift,Ios,Arrays,Swift,来自服务的JSON { "firstname": "Utku", "lastname": "Dalmaz", "photos": [{ "src": "image", "post_id": "69" }, { "src": "image", "post_id": "74" }, { "src": "image", "post_id": "133" },

来自服务的JSON

{
    "firstname": "Utku",
    "lastname": "Dalmaz",
    "photos": [{
        "src": "image",
        "post_id": "69"
    }, {
        "src": "image",
        "post_id": "74"
    }, {
        "src": "image",
        "post_id": "133"
    }, {
        "src": "image",
        "post_id": "142"
    }]}
SWIFT代码

Alamofire.request("SERVICE", method: .post, parameters: parameters).validate().responseJSON { response in
                switch response.result {
                case .success:
                    if let json = response.result.value {
                        var success = 0
                        if let dictJSON = json as? [String: AnyObject] {
                            if let successInteger = dictJSON["success"] as? Int {
                                success = successInteger
                                if success == 1
                                {
                                    self.firstname = dictJSON["firstname"] as! String
                                    self.lastname = dictJSON["lastname"] as! String

                                    if let photos = dictJSON["photos"] as! Array<String> {

                                      let postID = //post_id data
                                      let src = //src data

                                      let data = InboxPhotos(ID: postID!, src: src!)
                                      self.photosArr.append(data)
                                    }  
                                   ...
Alamofire.request(“服务”,方法:.post,参数:parameters).validate().responseJSON{response in
开关响应。结果{
成功案例:
如果让json=response.result.value{
var成功=0
如果让dictJSON=json为?[字符串:AnyObject]{
如果让successInteger=dictJSON[“success”]as?Int{
成功者
如果成功==1
{
self.firstname=dictJSON[“firstname”]作为!字符串
self.lastname=dictJSON[“lastname”]作为!字符串
如果让photos=dictJSON[“photos”]as!数组{
让postID=//post\u id数据
设src=//src数据
让数据=收件箱照片(ID:postID!,src:src!)
self.photosArr.append(数据)
}  
...
我正在尝试从JSON服务获取数组数据。尽管我能够获取firstname和lastname数据,但我无法在swift代码中获取并循环数组


如何循环照片数组并将post_idsrc数据放入InboxPhotos并附加到photosArr数组?

我为您的JSON数据类型创建了JSON解析模式。您不需要任何东西,只需在创建模式对象时传递数据,就可以在不繁忙的情况下获取数据。

  let dictJSON = ...

  guard let photos = dictJSON?["photos"] as? [[String: Any]] else { return }

  let list = photos.map { InboxPhotos(ID: $0["post_id"] as! String, src: $0["src"] as! String)}

  // Or more safely.
  let list2: [InboxPhotos] = photos.compactMap {
    guard let src = $0["src"] as? String,
      let id = $0["post_id"] as? String else {
        return nil
    }

    return InboxPhotos(ID: id, src: src)
  }
struct UserModal{
        var firstname:String
        var lastname:String
        var photos: [PhotosModal]

init(dictData:[String: Any]) {
    self.firstname = dictData["firstname"] as? String ?? ""
    self.lastname = dictData["lastname"] as? String ?? ""
    var photosArr = [PhotosModal]()
    for data in dictData["photos"] as? [[String:Any]] ?? [] {
        photosArr.append(PhotosModal(src: data["src"] as! String, post_id: data["post_id"] as! Int))
    }
    self.photos = photosArr
}
}

struct PhotosModal{
    var src:String
    var post_id:Int
    init(src:String, post_id:Int) {
        self.src = src
        self.post_id = post_id
    }
}

let userModal = UserModal(dict: dictJSON?["photos"] as? [[String: Any]])

因此,请为该模式文件创建单独的文件。应用该文件,您将遵循单一责任类/文件的SOLID主要规则。

,因为它不是字符串数组。它是字典数组。请尝试dictJSON[“photos”]as![[String:String]]或dictJSON[“photos”]作为!Array@TejaNandamuri条件绑定的初始值设定项必须具有可选类型,而不是“[[String:String]]'你的帖子似乎没有包含明确的问题。预期结果是什么?@Ferdz我编辑了我的问题。谢谢你应该使用Codable for JSON,如果你只是粘贴样本数据,你可以让quicktype.io为你编写代码(注意选项)。然后我应该执行self.photosArr.append(列表2)?var photosArr:[InboxPhotos]=[InboxPhotos]()No.photosArr.removeAll()photosArr.append(contentsOf:list)//或仅photosArr=list