2017-01-17 3 views
0

У меня есть следующие JSON, который я использую вместе с ObjectMapper:Mapper объект не имеет доступа вложенного массива

Open Api

сниппет Response

{ 
    "data": [ 
    { 
     "CategoryName": "רוגע", 
     "CategoryID": "63", 
     "CategoryDate": "2016-08-26 02:12:05", 
     "CategoryImage": "relax.png", 
     "SubCategoryArray": [ 
     { 
      "SubCategoryName": "רוגע", 
      "SubCategoryRefID": "63", 
      "SubCategoryID": "86", 
      "SubCategoryDate": "2016-08-28 02:57:07", 
      "TextArray": [ 
      { 
       "TextID": "32", 
       "Text": "<p dir=\"rtl\"><span style=\"font-size:48px\"><strong><span dir=\"RTL\" lang=\"HE\" style=\"font-family:Arial\">פרופורציה</span></strong> . הכול הבל הבלים. חולף כהרף עין. אז לנשום.</span></p>\r\n" 
      }, 

Моя проблема заключается в получении данных от «SubCategoryArray» и «TextArray»

В моем сопоставлении я попытался сделать следующее:

import UIKit 
import ObjectMapper 

class APIResult: Mappable { 
    var data : [dataArray]? 
    required init?(map: Map){ 
    } 
    func mapping(map: Map) { 

     data <- map["data"] 
    } 
} 
class dataArray: Mappable{ 
    var CategoryName: String? 
    var CategoryID: String? 
    var CategoryDate: String? 
    var CategoryImage: String? 
    var SubCategoryArray: SubCategoryArray? 
    required init?(map: Map){ 
    } 
    func mapping(map: Map) { 

     CategoryName <- map["CategoryName"] 
     CategoryID <- map["CategoryID"] 
     CategoryDate <- map["CategoryDate"] 
     CategoryImage <- map["CategoryImage"] 
     SubCategoryArray <- map["SubCategoryArray"] 
    }  
} 
class SubCategoryArray: Mappable { 
    var SubCategoryName: String? 
    var SubCategoryRefID: String? 
    var SubCategoryID: String? 
    var SubCategoryDate: String? 
    var TextArray: TextArray? 
    required init?(map: Map){ 
    } 
    func mapping(map: Map) { 

     SubCategoryName <- map["SubCategoryName"] 
     SubCategoryRefID <- map["SubCategoryRefID"] 
     SubCategoryID <- map["SubCategoryID"] 
     SubCategoryDate <- map["SubCategoryDate"] 
     TextArray <- map["TextArray"] 
    } 
} 
class TextArray: Mappable { 
    var TextID: String? 
    var Text:String? 
    required init?(map: Map){ 
    } 
    func mapping(map: Map) { 

     TextID <- map["TextID"] 
     Text <- map["Text"] 
//  SubCategoryID <- map["SubCategoryID"] 
//  SubCategoryDate <- map["SubCategoryDate"] 
//  TextArray <- map["TextArray"] 
    } 
} 

Укажите, что я делаю неправильно.

+0

в соответствии с моим пониманием все хорошо, но вы используете класс dataArray сверху, и вы ответ json показывают только данные, которые могут быть единственной проблемой. –

+0

Фактически это синтаксический анализ данных внутри данных, но он не содержит более низкие уровни, такие как SubCategoryArray и TextArray –

ответ

1

Это, как вы бы сопоставить эти данные

import Foundation 
import ObjectMapper 

class customData: Mappable { 


var categoryName: String = "" 
var categoryId: String = "" 
var subCategoryArray: [SubCategoryArray] = [] 

required init?(_ map: Map) { 

} 

func mapping(map: Map) { 

    categoryName   <- map["data.CategoryName"] 
    categoryId    <- map["data.CategoryID"] 
    subCategoryArray  <- map["data.SubCategoryArray"] 
} 
} 

class SubCategoryArray: Mappable { 


var SubCategoryName: String = "" 
var SubCategoryRefID: String = "" 

var textArray: [TextArray] = [] 
required init?(_ map: Map) { 

} 

func mapping(map: Map) { 

    SubCategoryName   <- map["SubCategoryName"] 
    SubCategoryRefID  <- map["SubCategoryRefID"] 
    textArray    <- map["TextArray"] 

} 
} 

class TextArray: Mappable { 


var TextID: String = "" 
var Text: String = "" 

required init?(_ map: Map) { 

} 

func mapping(map: Map) { 

    TextID    <- map["TextID"] 
    Text    <- map["Text"] 
} 
} 

Позвольте мне знать, если вы обнаружите какие-либо трудности.