2016-10-06 5 views
0

После того как я конвертировать мой проект в стремительной 3 я побежал ошибку времени, когда я пытаюсь разбора объекта JSON для NSArray это мой кодСинтаксический JSON объект NSArray в Swift 3

let receipt: Data! = try? Data(contentsOf: receiptURL) 
    if receipt == nil {//NSData(contentsOfURL: receiptURL, options: nil, error: nil)! 
     //   validateReceipt(false) 
     return 
    } 
    let base64Data: String = receipt.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0)) as String 

    let documentsDirectory = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last?.path// 
    do{ 
     let payload: Dictionary = ["receipt-data" : base64Data as String, "password": sharedSecret as String ] 
     let receiptData = try JSONSerialization.data(withJSONObject: payload, options: JSONSerialization.WritingOptions.prettyPrinted) 

     let request = NSMutableURLRequest(url: URL(string: serverURL)!, cachePolicy: NSURLRequest.CachePolicy.useProtocolCachePolicy, timeoutInterval: 10) // ur website 

     request.httpMethod = "POST" 

     request.httpBody = receiptData as! Data? 
     var response: URLResponse? 
     let resultData = try NSURLConnection.sendSynchronousRequest(request as URLRequest, returning: &response) 

     do{ 
      let json = try JSONSerialization.jsonObject(with: resultData, options: .mutableLeaves) as? NSDictionary 
      let statusCode = (json?.object(forKey: "status") as! NSNumber).intValue 

      switch(statusCode){ 
      case 21000, 21002, 21003, 21004, 21006: 
       return 
      // break 
      case 21005: 
       //Server is not available: Save recipt data and try again later 
       return 
      case 21007: 
       validateReceipt(true) 
       return 

      case 21008: 
       validateReceipt(false) 
       return 

      default: 
       break 
      } 
      //print("**********************************") 
      //print("json :: ", json) 
      //print("**********************************") 
      if let parseJSON = json { 

       let latest_receipt_info:NSArray = (parseJSON.object(forKey: "receipt") as AnyObject).object(forKey: "in_app") as! NSArray 
       //var ms = 0 

       //parse the json reponse and add the objects into array 
       for i in 0 ..< latest_receipt_info.count { 
        let object:[String: String] = latest_receipt_info.object(at: i) as! [String : String] 
        let strMS = object["expires_date_ms"] 
        let prodId = object["product_id"] 
    if(prodId == iAPItems["LifeTime"] || prodId == iAPItems["Remove_Ads"]){ 
         latestObjectsForEachProduct[prodId!] = object 
        }else{ 
         if let oldTransaction = latestObjectsForEachProduct[prodId!] { 
          let strOldMS = oldTransaction["expires_date_ms"] 

          print("oldTransaction :: ",prodId, " :: ",strOldMS) 
          if(strMS!.toDouble() > strOldMS!.toDouble()){ 
           //latestObject = object 
           latestObjectsForEachProduct[prodId!] = object 
           //ms = str!.toInt() 
          } 
         }else{ 
          latestObjectsForEachProduct[prodId!] = object 
         } 

        } 
       } 

ошибки появляется на этой линии

let latest_receipt_info:NSArray = (parseJSON.object(forKey: "receipt") as AnyObject).object(forKey: "in_app") as! NSArray 

я не знаю, что я должен делать, если кто-нибудь может помочь

Обратите внимание, что на скор 2 своей работы

ответ

2

Попробуйте этот код

let json = try JSONSerialization.jsonObject (with: resultData, options: .mutableLeaves) as? NSDictionary пусть StatusCode = (JSon .Object (forKey:! "Статус") как NSNumber) .intValue

заменить этот код

let json = try JSONSerialization.jsonObject(with: resultData, options: .mutableLeaves) as? [String:AnyObject] 
      let statusCode = (json?["status"] as! NSNumber).intValue 

пусть latest_receipt_info: NSArray = (parseJSON.object (forKey: «получение») как AnyObject) .object (forKey: «in_app») как! NSArray

Чтобы заменить этот код

let latest_receipt_info:NSArray = parseJSON["receipt"]!["in_app"] as! NSArray 
+0

Большое спасибо ,, свою работу, как хотят –

Смежные вопросы