Solo per aggiungere a questo, perché stavo ottenendo anche questo errore. Passare attraverso tutte queste risposte sembra valere soprattutto per lavorare con l'interfaccia utente e le cose dello storyboard. So che il poster originale sembrava funzionare con l'interfaccia utente, ma quando si cercano possibili motivi per questo errore, per lo più tutte le domande riconducono a questa domanda con quelle altre chiuse come duplicati o semplicemente avendo problemi a collegare le cose in uno storyboard, quindi lo farò aggiungi la mia soluzione.
Stavo lavorando alla codifica di un servizio Web in Swift 2. Avevo creato tutti gli oggetti proxy e gli stub necessari. Mentre scorrevo attraverso l'XML restituito, creavo un'istanza dinamica dei miei oggetti, che provenivano tutti NSObjecte setValue:forKeyli utilizzavo . Ogni volta che ha setValue:forKeytentato di impostare una proprietà, è saltato in aria con questo errore.
Ho avuto un'istruzione switch per ogni tipo con cui avevo a che fare (ad es Bool?. CShort?, String?) E per ogni nodo XML ho esaminato quale tipo era sull'oggetto, quindi ho convertito il valore in quel tipo e ho provato a impostarlo setValue:forKey.
Alla fine ho iniziato a commentare tutte queste setValue:forKeyrighe e ho scoperto che il mio defaultcaso dell'istruzione switch ha funzionato String?.
Ho finalmente capito che non è possibile utilizzare tipi rapidi opzionali con a setValue:forKeymeno che non abbiano una mappatura diretta su un tipo Objective-C come String?o NSNumber?. Ho finito per cambiare tutti i CShort?tipi in NSNumber?dato che ha una mappatura diretta. Per Bool?nel mio caso è andato tutto bene per me solo l'uso Boole inizializzare a false. Altri potrebbero non avere quel lusso.
Ad ogni modo, che mal di testa è stato così spero che questo aiuti qualcun altro che ha un problema simile e continua a essere reindirizzato a questa domanda e dicendo a se stesso: "Non sto facendo nulla nell'interfaccia utente !!".
Quindi, infine, per ripetere ancora una volta la codifica valore-chiave non funziona con gli optional. Di seguito ho finito per trovare un posto, ma ho dimenticato dove, quindi, a chiunque abbia pubblicato questo mi scuso e darei credito se mi ricordassi dove l'ho trovato, ma mi ha salvato la vita:
Non è possibile utilizzare KVC su una proprietà Int opzionale, poiché KVC è Cocoa / Objective-C e Objective-C non è in grado di visualizzare un Int opzionale - non è collegato a Objective-C. Objective-C può vedere solo i tipi collegati a Objective-C:
tipi di classe derivati da NSObject
tipi di classe esposti con @objc
Strutture veloci che sono collegate a ponte