2016-04-20 8 views
0

umgewandelt werden. Nachdem ich einen Code gelesen hatte, der mit Xcode7.3 zu funktionieren schien, bemerkte ich, dass ich Ich bekomme einen Wert vom Typ 'Swift._NativeDictionaryStorageOwner' (0x40c2134) konnte nicht in 'NSArray' (0x383bb8d8) umgewandelt werden.Wert des Typs 'Swift._NativeDictionaryStorageOwner <Swift.String, Swift.AnyObject>' (0x40c2134) konnte nicht in 'NSArray' (0x383bb8d8)

userdata.data = userOtherInfo [indexPath.row] as! NSArray

Hier ist der Abschnitt von Code, der das Problem zu sein scheint:

func collectionView(collectionView: UICollectionView,  didSelectItemAtIndexPath indexPath: NSIndexPath) { 

    let userdata:SubContentsViewController! = SubContentsViewController() 
    let storyboard = UIStoryboard(name: "SubContentsViewController", bundle: nil) 
    let subContentsVC = storyboard.instantiateViewControllerWithIdentifier("SubContentsViewController") as! SubContentsViewController 
    userdata.data = userOtherInfo[indexPath.row] as! NSArray 
    self.navigationController?.pushViewController(subContentsVC, animated: true) 
} 
+0

Was ist der Inhalt von 'userOtherInfo [indexPath.row]'? Scheint so, als ob du NSDictionary in NSArray konvertieren willst. –

+0

guard let value = response.result.value als? [String: AnyObject], rows = Wert ["Suche_Ergebnis"] als? [[String: AnyObject]] else { print ("Fehlgeschlagene Daten vom fetchAlldatas-Dienst empfangen") zurückgeben } self.userOtherInfo = Zeilen – Lalit

+0

Wie ich vermutete, enthält userOtherInfo Wörterbücher. Sie können das also nicht in NSArray konvertieren. –

Antwort

0

Wie Sie in Ihrem Kommentar

rows = value["search_result"] as? [[String: AnyObject]]
self.userOtherInfo = rows

rows/userOtherInfo ist, schrieb ein Reihe von Wörterbücher ([[String: AnyObject]]) auf Erfolg.
Das ist, was die Fehlermeldung sagt:

nicht Dictionary Array werfen kann.

Die Lösung ist sehr, sehr einfach.

Da der Compiler bereits weiß, dass userOtherInfo ein Array von [String: AnyObject] enthält, brauchen Sie überhaupt kein Casting.

userdata.data = userOtherInfo[indexPath.row] // object is [String:AnyObject] 

Stellen Sie sicher, dass userdata.data als [String:AnyObject] oder ein spezifischeres Wörterbuch deklariert wird.