Merhabalar herkese json'dan gelen veriyi bir struct'ın içine parse etmeye çalışıyorum. Json bu fonksiyon ile başarılı bir şekilde geliyor ve print(responSting)'de eksiksiz yazdırılıyor;
func getSales(authorization:String) {
let url = NSURL(string: "http://api.xxx.com/satislar")
let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "GET"
request.addValue(authorization, forHTTPHeaderField: "Authorization")
let task = URLSession.shared.dataTask(with: request as URLRequest) { data,response,error in
guard error == nil && data != nil else {
print("error", error!)
return
}
let httpStatus = response as? HTTPURLResponse
if httpStatus!.statusCode == 200 {
if data?.count != 0 {
let responString = try! JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? NSArray
print(responString!, "get sales successful") //buraya kadar tamam
DispatchQueue.main.async {
//self.tableView.reloadData()
}
} else {
print("No got data from URL")
}
} else {
print("error httpstatus code is ", httpStatus!.statusCode)
}
}
task.resume()
}
böyle bir struct yapısı kurdum;
struct SalesStruct {
var id:Int
var name:String
var date:String
var product:String
var price:String
init(productDetails:[String:String]) {
self.id = Int(productDetails["REFID"]!) ?? 0
self.name = productDetails["CAD"]!
self.date = productDetails["ISLEMTARIHI"]!
self.product = productDetails["PAKET"]!
self.price = productDetails["TUTAR"]!
}
}
şu sekilde de viewcontroller da tanımladım;
var salesDataStack:[SalesStruct] = []
bu da json'dan gelen datanın bir kısmı;
(
{
REFID=1
CAD = "company name";
ISLEMTARIHI = "11.06.2017";
PAKET = "product";
TUTAR = "550,20 $";
},
{
REFID=1
CAD = "company name2";
ISLEMTARIHI = "16.06.2017";
PAKET = "product";
TUTAR = "220,20 $";
}
)
print(responString!, "get sales successful") dan sonra islemleri yapmam gerek düşüncesiye alttaki 2 örneği denedim ancak sonuca varamadım;
for temp in responString! {
self.salesDataStack.append(SalesStruct(productDetails: temp as! [String : String]))
}
for temp in responString! {
let product = SalesStruct(productDetails: temp as! [String : String])
self.salesDataStack.append(product)
}