2017-02-10 28 views
0

postsの値をcell.textLabel?.textに渡すとCannot assign value of type 'Any' to type 'String?' が届きました。私は石鹸サービスから応答を受けています。投稿には​​を追加します。 そしてまた、私は私のPostssecondViewController、助けてありがとうタイプ 'Any'の値を 'String'に割り当てることはできません。

ください
import UIKit 

class ViewController: UIViewController ,XMLParserDelegate,UITextFieldDelegate, NSURLConnectionDelegate, UITableViewDelegate , UITableViewDataSource { 

    @IBOutlet var firstName: UITextField! 

    @IBOutlet var lastName: UITextField! 

    @IBOutlet var tableView: UITableView! 

    var parser = XMLParser() 

    var posts = NSMutableArray() 

    var elements = NSMutableDictionary() 
    var element = NSString() 
    var title1 = NSMutableString() 
    var date = NSMutableString() 

    var xmlData = NSMutableData() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     tableView.dataSource = self 
     tableView.delegate = self 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return posts.count 
    } 

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let cell = UITableViewCell() 

     cell.textLabel?.text = posts[indexPath.row] // Cannot assign value of type 'Any' to type 'String?' 

     print(indexPath.row) 
     return cell 
    } 

    func beginParsing() 
    { 
     posts = [] 
     parser = (XMLParser(data:xmlData as Data)) 
     parser.delegate = self 
     parser.parse() 
     //tbData!.reloadData() 

     for element in posts { 
      print(element) 
     } 
    } 

    func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) 
    { 
     element = elementName as NSString 

     if (elementName as NSString).isEqual(to: "response") 
     { 
      elements = NSMutableDictionary() 
      elements = [:] 
      title1 = NSMutableString() 
      title1 = "" 
      date = NSMutableString() 
      date = "" 

     } 
    } 

    func parser(_ parser: XMLParser, foundCharacters string: String) 
    { 


     // let data = string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines).uppercased() 

     // let str = data.replacingOccurrences(of: "<[^>]+>", with: "", options: .regularExpression, range: nil) 

     if element.isEqual(to: "status") 
     { 
       title1.append(string) 

     } 
     else if element.isEqual(to: "message") { 
      date.append(string) 
     } 
    } 

    func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) 
    { 
     if (elementName as NSString).isEqual(to: "response") 
     { 

      if !title1.isEqual(nil) { 
       elements.setObject(title1, forKey: "status" as NSCopying) 
      } 
      if !date.isEqual(nil) { 
       elements.setObject(date, forKey: "message" as NSCopying) 
      } 
      posts.add(elements) 
     } 
    } 


    @IBAction func invoke(_ sender: Any) { 

     let firstNmaeValue = firstName.text 
     let lastNameValue = lastName.text 

     let is_SoapMessage = String (format :"<?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'><soapenv:Header/><soapenv:Body><doRegisterUser soapenv:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'><firstNameValue>\(firstNmaeValue)</firstNameValue><lastNameValue>\(lastNameValue)</lastNameValue></doRegisterUser></soapenv:Body></soapenv:Envelope>") 

     let is_URL: String = "http://192.168.43.23/app/app/service/nm.php?wsdl" 

     let lobj_Request = NSMutableURLRequest(url: NSURL(string: is_URL)! as URL) 
     let session = URLSession.shared 

     lobj_Request.httpMethod = "POST" 
     lobj_Request.httpBody = is_SoapMessage.data(using: String.Encoding.utf8) 

     lobj_Request.addValue("192.168.43.23", forHTTPHeaderField: "Host") 

     lobj_Request.addValue("text/xml; charset=utf-8", forHTTPHeaderField: "Content-Type") 

     lobj_Request.addValue(String (is_SoapMessage), forHTTPHeaderField: "Content-Length") 

     lobj_Request.addValue("http://192.168.43.23/app/app/service/nm.php/doRegisterUser", forHTTPHeaderField: "SOAPAction") 

     let task = session.dataTask(with: lobj_Request as URLRequest, completionHandler: {data, response, error -> Void in 

      print("response = \(response)") 




      let xmlData = NSString(data: data!, encoding: String.Encoding.utf8.rawValue) 


      self.xmlData = NSMutableData(data: data!) 

      print("Body: \(xmlData)") 

      self.beginParsing() 

      print("Status is = \(self.title1)") 

      print("Message is = \(self.date)") 

      if error != nil 
      { 
       print("Error: ") 
      } 

     }) 
     task.resume() 

    } 

} 
+0

あなた 'posts'配列は' NSMultableArray'ですその要素の型が 'Any'なので、それを文字列にキャストしてからそれを設定する必要があります。 –

+0

'posts [indexPath.row]'が 'String'を返すことを確認したら' posts [indexPath.row]を?文字列?? "" ' –

+0

@Dharmesh Kheni、@ Xcoder123助けてくれてありがとう、どのように私はtableViewでこの' posts'を印刷できますか? – ViralRathod

答えて

3

にあなたがStringAnyをキャストする必要があることを渡したい...

cell.textLabel?.text = posts[indexPath.row] as? String 
+0

' cell.textLabel?.text = posts [indexPath.row] as?文字列?? "その他の文字列" 'エラー処理の方が良いかもしれません。 –

+0

@Callam、ありがとうございました。 – ViralRathod

+0

@callamしかし、私の応答は私のtableViewで印刷されていません。あなたはそれについて私に何か考えを与えることができます – ViralRathod

関連する問題