Sto caricando un elenco di oggetti da un database di dati di base in una vista tabella.[AnyObject]? ' non ha un membro chiamato 'subscript'
class ScheduleViewController: UITableViewController {
private var items: [AnyObject]?
// MARK: - Table view data source
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if let itemCount = items?.count {
return itemCount
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("DayScheduleCell", forIndexPath: indexPath) as DayScheduleCell
if let act = items[indexPath.row] as Activity {
if act.client != nil {
// ...
}
}
return cell
}
}
I dati vengono recuperati all'interno di una chiusura così ho dichiarato items
array come optional perché potrebbe essere trascurabile della prima esecuzione.
Viene visualizzato l'errore '[AnyObject]?' non ha un membro chiamato 'subscript' su questa riga if let act = items[indexPath.row] as? Activity
.
Non riesco a capire come risolvere questo problema.
Grazie per la risposta. Ricevo un nuovo errore ** Impossibile richiamare '! =' Con un elenco di argomenti di tipo '(@lvalue Client, NilLiteralConvertible)' ** sulla riga 'if act.client! = Nil'. La proprietà client è una proprietà che contiene un oggetto 'Client'. Si prega di consultare la sottoclasse 'NSManagedObject' (http://pastie.org/9584414#) di' Activity'. Nel modello di dati ispezionare sotto le proprietà per il cliente, tuttavia è selezionato come facoltativo. – Isuru
'client' non è un optional, e come tale non può essere' nil' - quindi non è possibile verificare se non è nullo.Che 'if' è concettualmente ridondante e ovviamente considerato un errore per il compilatore – Antonio
Quindi in base a [questo] (http://stackoverflow.com/q/25485273/1077789) domanda, anche se le proprietà sono contrassegnate come facoltative in Dati principali, non è menzionato nelle classi 'NSManagedObject' generate. Devi aggiungerlo manualmente. Ho aggiunto un '?' Di fronte alla proprietà del client e ora funziona correttamente. – Isuru