ich die folgende Fehlermeldung erhalten:Wert kann nicht vom Typ zuordnen '[[String: ANYOBJECT]]' eingeben '[[Zeichenfolge: ANYOBJECT]]'
Cannot assign value of type '[[String : AnyObject]]' to type '[[String : AnyObject?]]'
Es ist seltsam, diese Aufgabe arbeiten Bevor ich dann meinen Xcode neu startete, fing ich an, diesen Fehler zu bekommen. Von dem, was ich online gelesen habe, sollte dies den Fehler nicht geben.
Hier ist mein Code:
import UIKit
import Alamofire
import SwiftyJSON
class Signal Condo TableViewController: UITableViewController {
@IBOutlet var tableview: UITableView!
var singleCondoData = [[String:AnyObject]]()
var CondoIndivi = [[String:AnyObject]]()
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem()
self.tableView.delegate = self
self.tableView.dataSource = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return singleCondoData.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! SignleTableTableViewCell
if singleCondoData.count != 0 {
let dict = singleCondoData[indexPath.row] as NSDictionary
//cell.label1.text? = (dict["name"] as? String)!
if let nullcheck = (dict["address"] as? String) {
cell.label2.text? = nullcheck
}
}
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let dict = singleCondoData[indexPath.row] as NSDictionary
if let unitNullCheck = (dict["mls_number"] as? String) {
let item_id = unitNullCheck
getCondoUnits(item_id)
print(item_id)
}
}
//get the individual condo id
func getCondoUnits(condo_id : String){
Alamofire.request(.GET, "http://android.goidx.com/search/?mls_number=" + String(condo_id)).validate().responseJSON { response in
if let value = response.result.value {
let json = JSON(value)
if let resData = json.arrayObject {
self.CondoIndivi = (resData as? [[String:AnyObject]])!
print(self.CondoIndivi)
}
if self.CondoIndivi.count > 0 {
self.tableview.reloadData()
}
}
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let identifier = segue.identifier {
switch identifier {
case "details" :
let buildingdDetailVC = segue.destinationViewController as! DetailsViewController
buildingdDetailVC.CondoIndivi2 = self.CondoIndivi // line of the error
default:
break
}
}
}
}
ich sehe. es sollte nicht ein optionales sein. Danke und während wir bei der schnellen Frage sind, versuche ich, den Wert von diesem Array-Diktat wie diesem abzurufen, wenn man bath = self.CondoIndivi2 ["bath"] as! [[String: AnyObject]] { } aber ich bekomme diesen Fehler Kann keinen Wert vom Typ '[[String: AnyObject]]' mit einem Index vom Typ 'String' I indizieren habe das ganze Internet gegraben, aber dieser Fehler gibt mir nicht das richtige Problem. Was denkst du? –
'CondoIndivi2' ist ein Array von Wörterbüchern, kein Wörterbuch. Daher sollten Sie Integer-Indizes verwenden, um das Dictionary zuerst zu erhalten, als den String "bath" zu verwenden, um den Wert zu erhalten. Beispiel: 'if let bath = self.CondoIndivi2 [0] [" bath "] als? String {... ' – ozgur
Danke, es hat funktioniert –