簡體   English   中英

數據未在 collectionView 中按部分設置

[英]data not set section wise in collectionView

我正在填充從JSONUICollectionView的數據,所以首先讓我告訴你我的回應

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"
}

所以這是我的回應,現在我將向您展示我的 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
    }
}

下面是我獲取數據和填充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
}

現在我將向您展示我從我的代碼中獲得的預期 output 和當前 output

![目前我正在像這樣得到 output][]

![][現在我想要像這樣的 output]

有人請幫助我如何在collectionView中按部分獲取圖像

我之前的問題是關於如何從 json 獲取數據,現在這個問題是針對在填充 collectionView 時獲取數據后我遇到的問題,所以請幫助我,我遇到了這個問題

我在我的空文件中使用了你的 json 文件,我已經解析了數據。你可以這樣傳遞

像這樣制作 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