2015-04-26 10 views

Antwort

52

Das Problem ist nicht die Besetzung, aber die Tatsache, dass self.objects ein optionales Array zu sein scheint: [AnyObject]?.
Deshalb, wenn Sie einen ihrer Werte über einen Index zugreifen möchten, müssen Sie zuerst das Array auszupacken:

var user2: PFUser 
if let userObject = self.objects?[indexPath.row] { 
    user2 = userObject as! PFUser 
} else { 
    //handle the case of 'self.objects' being 'nil' 
} 

self.objects?[indexPath.row] verwendet optional chaining zum ersten self.objects auszupacken, und dann nennen sie Index ist.


Ab Swift 2, könnten Sie auch die guard statement verwenden:

var user2: PFUser 
guard let userObject = self.objects?[indexPath.row] else { 
    //handle the case of 'self.objects' being 'nil' and exit the current scope 
} 
user2 = userObject as! PFUser 
3

Meine Abhilfe wäre ..

  1. Wenn Sie sicher sind dass die Tabellenansicht nur enthält Benutzer versuchen, die Objekte Array of AnyObject in Array of PFUser zu schreiben. dann benutze es.
+0

das gibt immer noch Fehler, aber das funktioniert, nicht sicher warum: 'var user2 = self.objects! [IndexPath.row] as! PFUser' – user1406716

+0

Weil Objekte Array optional ist [AnyObject]? – Amit89

+0

ja. Danke für die Hilfe. – user1406716

5

ich in der gleichen Ausgabe lief und es so gelöst:

let scope : String = searchBar.scopeButtonTitles![searchBar.selectedScopeButtonIndex] as! String 

Für Ihren Fall Sie könnte tun:

var user2 : PFUser = self.objects![indexPath.row] as! PFUser 
1

Fügen Sie einfach ein! (Ausrufezeichen) nach Objekten, etwa so:

var user2 = self.objects![indexPath.row] as! PFUser 

, dass es für mich gerichtet :)

0

Ich hatte ein ähnliches Problem mit der folgenden Zeile:

array![row] 

Ich konnte nicht verstehen, wo das Problem kam von; wenn ich row durch eine Zahl wie 1 ersetzt habe, kompilierte der Code und lief ohne irgendwelche Probleme.

Dann hatte ich die glücklichen Gedanken davon zu diesem Wechsel:

array![Int(row)] 

Und es funktionierte. Für das Leben von mir, ich verstehe nicht, warum ein Array von einem Index von -1 theoretisch legal ist, aber da gehen Sie. Es macht für mich Sinn, dass die Indices nicht signiert sind, aber vielleicht ist es nur ich. Ich werde Chris darüber fragen müssen.