简体   繁体   English

数据未在 collectionView 中按部分设置

[英]data not set section wise in collectionView

i am populating data from JSON to UICollectionView so first let me show you my response我正在填充从JSONUICollectionView的数据,所以首先让我告诉你我的回应

JSON Response JSON 响应

{
  "jigyasa_category_list": [
    {
      "status": "1",
      "updated_date": "2019-11-18 17:02:37",
      "created_date": "2019-08-28 16:32:22",
      "jigyasa_category_image_id": "4",
      "jigyasa_sanskrit": "jigyasa cate sanskrit 2",
      "jig_cate_id": "7",
      "jigyasa": [
        {
          "image1": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/purple_1.png",
          "name_english": "",
          "image5": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/purple_5.png",
          "name_sanskrit": "",
          "images": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/purple_1.png",
          "image2": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/purple_2.png",
          "name_hindi": "gfdgfd",
          "image4": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/purple_4.png",
          "image3": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/purple_3.png",
          "jigyasa_id": "8"
        }
      ],
      "updated_by": "2",
      "created_by": "2",
      "jigyasa_hindi": "jigyasa cate hindi 1",
      "jigyasa_english": "jigyasa cate english 3"
    },
    {
      "status": "1",
      "updated_date": "2019-11-13 16:28:43",
      "created_date": "2019-08-29 15:07:53",
      "jigyasa_category_image_id": "2",
      "jigyasa_sanskrit": "dfgh",
      "jig_cate_id": "11",
      "jigyasa": [
        {
          "image3": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_3.png",
          "jigyasa_id": "5",
          "image5": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_5.png",
          "name_sanskrit": "n,n,",
          "name_english": "n,n,",
          "images": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_1.png",
          "image2": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_2.png",
          "image1": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_1.png",
          "image4": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_4.png",
          "name_hindi": "n,n,"
        },
        {
          "image3": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_3.png",
          "jigyasa_id": "7",
          "image5": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_5.png",
          "name_sanskrit": "",
          "name_english": "",
          "images": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_2.png",
          "image2": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_2.png",
          "image1": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_1.png",
          "image4": "http:\/\/192.168.1.115\/swadhyay\/assets\/uploads\/jigyasa_category_boxes\/green_4.png",
          "name_hindi": "sadsa"
        }
      ],
      "updated_by": "0",
      "created_by": "2",
      "jigyasa_hindi": "fcgh",
      "jigyasa_english": "dfh"
    },
    {
      "created_date": "2019-10-11 17:07:09",
      "updated_date": "2019-10-11 17:10:04",
      "jigyasa_hindi": "hindi",
      "jig_cate_id": "14",
      "jigyasa_english": "english",
      "created_by": "2",
      "jigyasa_category_image_id": "2",
      "updated_by": "2",
      "status": "1",
      "jigyasa_sanskrit": "sanskrit",
      "jigyasa": [

      ]
    },
    {
      "created_date": "2019-11-04 10:48:06",
      "updated_date": "2019-11-04 10:48:06",
      "jigyasa_hindi": "hfgh",
      "jig_cate_id": "15",
      "jigyasa_english": "fghfg",
      "created_by": "2",
      "jigyasa_category_image_id": "2",
      "updated_by": "0",
      "status": "1",
      "jigyasa_sanskrit": "gfhfgh",
      "jigyasa": [

      ]
    }
  ],
  "message": "Jigyasa Category",
  "success": "1"
}

so this is my response and now i will show you my model class所以这是我的回应,现在我将向您展示我的 model class

struct Jigyasa : Codable {
    let image3 : String?
    let image1 : String?
    let name_english : String?
    let images : String?
    let name_hindi : String?
    let jigyasa_id : String?
    let image5 : String?
    let image4 : String?
    let name_sanskrit : String?
    let image2 : String?

    init(image3: String?,image1: String?,name_english: String,images: String?,name_hindi: String?,jigyasa_id: String?,image5: String?,image4: String?,name_sanskrit: String?,image2: String?) {
        self.image3 = image3
        self.image1 = image1
        self.name_english = name_english
        self.images = images
        self.name_hindi = name_hindi
        self.jigyasa_id = jigyasa_id
        self.image5 = image5
        self.image4 = image4
        self.name_sanskrit = name_sanskrit
        self.image2 = image2
    }
}

and below is my code for fetch data and populating collectionView下面是我获取数据和填充collectionView的代码

var jigyasaData = [Jigyasa]()

func jigyasaCatList(){
    let preferences = UserDefaults.standard
    let uid = "u_id"
    let acTkn = "acc_tkn"

    let u_ID = preferences.object(forKey: uid)
    let A_Token = preferences.object(forKey: acTkn)

    let params = ["user_id": u_ID!, "access_token": A_Token!]
    print(params)
    Alamofire.request(apijigyasacategorylist, method: .post, parameters: params).responseJSON(completionHandler: {(response) in
        switch response.result{
        case.success(let value):
            let json  = JSON(value)
            print(json)
            self.jigyasaData.removeAll()
            let data = json["jigyasa_category_list"]
            if data == []{

            }else{
                data.array?.forEach({ (jList) in
                    let jigarray = jList["jigyasa"]
                    if jigarray == []{

                    }else{
                        jigarray.array?.forEach({ (jUData) in
                            let j_uData = Jigyasa(image3: jUData["image3"].stringValue, image1: jUData["image1"].stringValue, name_english: jUData["name_english"].stringValue, images: jUData["images"].stringValue, name_hindi: jUData["name_hindi"].stringValue, jigyasa_id: jUData["jigyasa_id"].stringValue, image5: jUData["image5"].stringValue, image4: jUData["image4"].stringValue, name_sanskrit: jUData["name_sanskrit"].stringValue, image2: jUData["image2"].stringValue)
                            self.jigyasaData.append(j_uData)
                        })
                    }
                    self.collView.reloadData()
                })
            }
        case.failure(let error):
            print(error.localizedDescription)
        }
    })
}


func numberOfSections(in collectionView: UICollectionView) -> Int {
        return 1
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return jigyasaData.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as! JigyasaCollectionViewCell
    let photo = jigyasaData[indexPath.row].images
    let fileUrl = URL(string: photo!)
    cell.imgView.sd_setImage(with: fileUrl, placeholderImage: UIImage(named: "ic_PlaceHolder"), options: .refreshCached, completed: nil)
    cell.imgView.layer.cornerRadius = 10
    cell.lblTitle.text = jigyasaData[indexPath.row].name_hindi
    cell.imgView.layer.shadowColor = UIColor.gray.cgColor
    cell.imgView.layer.shadowOffset = CGSize(width: 0.0, height: 0.0)
    cell.imgView.layer.shadowRadius = 2.0
    cell.imgView.layer.shadowOpacity = 0.3
    return cell
}

now i will show you expected output and current output which i am getting from my code现在我将向您展示我从我的代码中获得的预期 output 和当前 output

![Currently i am getting output like this][] ![目前我正在像这样得到 output][]

![][And Now i want output like this] ![][现在我想要像这样的 output]

someone please help me how to get images by section in collectionView有人请帮助我如何在collectionView中按部分获取图像

my previous question is for how to fetch data from json and now this question is for after getting data while populating collectionView i am facing issue so please help me i am stuck with this issue我之前的问题是关于如何从 json 获取数据,现在这个问题是针对在填充 collectionView 时获取数据后我遇到的问题,所以请帮助我,我遇到了这个问题

I used your json file to in my empty file and I have parsed data.you can pass as this我在我的空文件中使用了你的 json 文件,我已经解析了数据。你可以这样传递

Make Model as this像这样制作 Model

  import Foundation

  struct JigyasaModel: Codable {
  let jigyasaCategoryList: [JigyasaCategoryList]
  let message, success: String

 enum CodingKeys: String, CodingKey {
    case jigyasaCategoryList = "jigyasa_category_list"
    case message, success
}
}

// MARK: - JigyasaCategoryList
 struct JigyasaCategoryList: Codable {
let status, updatedDate, createdDate, jigyasaCategoryImageID: String
let jigyasaSanskrit, jigCateID: String
let jigyasa: [Jigyasa]
let updatedBy, createdBy, jigyasaHindi, jigyasaEnglish: String

enum CodingKeys: String, CodingKey {
    case status
    case updatedDate = "updated_date"
    case createdDate = "created_date"
    case jigyasaCategoryImageID = "jigyasa_category_image_id"
    case jigyasaSanskrit = "jigyasa_sanskrit"
    case jigCateID = "jig_cate_id"
    case jigyasa
    case updatedBy = "updated_by"
    case createdBy = "created_by"
    case jigyasaHindi = "jigyasa_hindi"
    case jigyasaEnglish = "jigyasa_english"
}
}

// MARK: - Jigyasa
struct Jigyasa: Codable {
let image1: String
let nameEnglish: String
let image5: String
let nameSanskrit: String
let images, image2: String
let nameHindi: String
let image4, image3: String
let jigyasaID: String

enum CodingKeys: String, CodingKey {
    case image1
    case nameEnglish = "name_english"
    case image5
    case nameSanskrit = "name_sanskrit"
    case images, image2
    case nameHindi = "name_hindi"
    case image4, image3
    case jigyasaID = "jigyasa_id"
}
}


 var jigyasaData = [JigyasaCategoryList]() ///--  this array

if let file = Bundle.main.url(forResource: "JsonFile", withExtension: "json")   {
    do {
        let data = try Data(contentsOf: file)

         // let data  = JSON(value)

         let decoder = JSONDecoder()
         let user = try decoder.decode(JigyasaModel.self, from: data)
         print(user.jigyasaCategoryList.count)       
          jigyasaData = user.jigyasaCategoryList
          collectionView.reloadData() //-- reload collection view

         }
    catch {
              print(error.localizedDescription)
           }
         }




 //--- collection view data source 

func numberOfSections(in collectionView: UICollectionView) -> Int
{
     return jigyasaData.count

}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {

    return  jigyasaData[section].jigyasa.count
}


  func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath) as? Yourcell


    let imagStrng = jigyasaData[indexPath.section].jigyasa[indexPath.row].image3
    return cell 
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM