/ / Xcode - Bind textfield na element Swift slovníka - swift, xcode, binding, interface-Builder

Xcode - Bind textové pole na prvok Swift slovníka - swift, xcode, binding, interface-builder

Zaviedol som textové pole do hodnoty slovníka Swift pomocou nástroja Builder rozhrania. V textovom poli sa zo slovníka vyberie správna hodnota a zobrazí sa v textovom poli.

Keď zmením hodnotu elementu v dictu cez

myDict["Textfield1"] = "New value"

zmena nie je viditeľná v textovom poli. Keď priradím hodnotu textového poľa k vlastnosti triedy, akúkoľvek zmenu tejto vlastnosti okamžite vidíte v textovom poli. Uniká mi niečo?

Vďaka!

odpovede:

1 pre odpoveď č. 1

Takže v podstate to nebude fungovať. Väzby pracujú pomocou systému KVO / KVN, ktorý vysiela upozornenia, keď objekty Obj-C menia svoju hodnotu. Je to veľmi chytré, ale neprišli to k Swiftovi. Ak to chcete pridať, slovníky Swift sú typy hodnôt.

"Riešením" je zabezpečiť, aby vec, s ktorou sa viažete, má KVO. Existuje niekoľko vecí, ktoré môžete urobiť. Prvým je vytvoriť si vlastnú triedu a podtriedu NSObject, a presto, dostanete KVO. Tu je stránka ako to urobiť.

Ale lepším spôsobom je použiť dynamic kľúčové slovo v kolekcii Swift, myDict, Toto spúšťa premostenie do Obj-C a dostanete KVO. Teraz som to nepoužíval s Swiftovým dictom, takže som si úplne istý, čo sa stane. Možno budete musieť urobiť myDict a NSDictionary. Ale je to jedna menšia zmena, tak určite dať dynamic vyskúšajte!