मैं urlsession का उपयोग कर वेब सर्वर पर ऑब्जेक्ट्स की सरणी भेजने की कोशिश कर रहा हूं। सर्वर में भेजने और स्टोर करने की तुलना में मुझे ऑब्जेक्ट्स की सरणी को कुछ प्रारूप में परिवर्तित करने की आवश्यकता है।

मॉडल.स्विफ्ट

class UserDetails 
{
    var name: String
    var phNumber: Int
    var pincode : Int
    var numberOfItems: Int

    init(name: String, number: Int, pin : Int, items: Int) {

        self.name = name
        self.phNumber = number
        self.pincode = pin
        self.numberOfItems = items
    }

}


/* viewController.swift */

    var users: [UserDetails] = []
    func sendLabDetails(userId: Int,users: [UserDetails], completion: @escaping (_ serverResponse: NSDictionary) -> Void)
        {
            let parameters = ["user_id": userId, "users": users] as [String : Any]
    }

मुझे लगता है कि मैं एपीआई को ऑब्जेक्ट्स के साथ कॉल करने में गलत कर रहा हूं। वस्तुओं की सरणी को शब्दकोशों या किसी अन्य JSON समर्थित प्रारूप में बदलने के तरीके के बारे में कुछ कोड के साथ कृपया मेरी सहायता करें।

1
Nafisur Ahmed 17 जून 2019, 11:03

1 उत्तर

सबसे बढ़िया उत्तर

यदि आपके पास Dictionary है, तो आप JSONEncoder का उपयोग करके इसे JSON में बदल सकते हैं:

 let parameters = ["user_id": "newID", "users": "newUser"]
 do{
    let jsonParameter = try JSONEncoder().encode(parameters)
}catch{
    print(error.localizedDescription)
}

नोट: किसी ऑब्जेक्ट को एन्कोड करने का मतलब है कि यह ऑब्जेक्ट प्रोटोकॉल Codable के अनुरूप है। Any इस प्रोटोकॉल के अनुरूप नहीं है, इसलिए इसे JSON के रूप में एन्कोड नहीं किया जा सकता है। ऐसा करने के लिए, आप अपनी कक्षा UserDetails को उस प्रोटोकॉल के अनुरूप बना सकते हैं या आपको अपनी डेटा संरचना बदलनी होगी, क्योंकि [String:Any] अच्छा नहीं है।

उदाहरण:

class UserDetails: Codable //Be sure to make the class to conform to this protocol if needed
{
    var name: String
    var phNumber: Int
    var pincode : Int
    var numberOfItems: Int

    init(name: String, number: Int, pin : Int, items: Int) {

        self.name = name
        self.phNumber = number
        self.pincode = pin
        self.numberOfItems = items
    }

}

//Now you can encode:

var users: [UserDetails] = []

    func sendLabDetails(userId: Int,users: [UserDetails], completion: @escaping (_ serverResponse: NSDictionary) -> Void)
        {
            let parameters = ["user_id": userId, "users": users]
            do{
    let jsonParameter = try JSONEncoder().encode(parameters)
    //HERE YOU CAN USE jsonParameter to send data to server
}catch{
    print(error.localizedDescription)
}
    }

1
Andrew21111 17 जून 2019, 11:40