Ich erhielt Cannot assign value of type 'Any' to type 'String?'
, wenn ich den posts
Wert an cell.textLabel?.text
übergebe, habe ich Antwort vom Seifenservice erhalten, und ich füge zu den Pfosten posts.add(elements)
hinzu. und ich möchte auch, dass Posts
passieren meiner secondViewController
bitte Thankyou helfen,Kann keinen Wert des Typs 'Any' dem Typ '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()
}
}
Ihre 'posts' Array ist ein' NSMultableArray' die
Any
zu einemString
.. werfen von nicht spezifiziertem Typ, so dass seine Elemente vom Typ 'Any' sind, deshalb müssen Sie es zuerst in eine Zeichenkette umwandeln und dann einstellen. –Wenn Sie sicher sind, dass 'posts [indexPath.row]' '' '' zurückgibt, versuchen Sie 'posts [indexPath.row] als? Schnur ?? "" –
@Dharmesh Kheni, @ Xcoder123 Vielen Dank für die Hilfe, eine Idee, wie kann ich diese "Beiträge" in TableView drucken? – ViralRathod