2015-12-27 5 views
1

Думаю, я запрограммировал себя в угол, но я надеюсь, что вы все знаете выход. У меня есть класс ...Связывание свойств Swift с NSTableView?

class Card { 
    var order: Int? = -1 
    var tag: String = "0" 
    var comment: String? 
    var data : [String: NSNumber] 
} 

В идеале все будет в data, который несколько строк и много чисел. Я начал с [String, String], но я обнаружил, что писал много кода для преобразования и преобразования, когда хотел (скажем) сравнить одно из этих чисел с нолем. Изменение его на [String, NSNumber] упростило все , что код, но теперь мой tableViewDataSource становится очень сложным, потому что некоторые данные находятся в data, а некоторые находятся в отдельном свойстве, таком как comment. Я даже попробовал [String, Any], но тогда все должно было быть брошено все время, чтобы что-либо сделать.

У меня такое чувство, что у меня отсутствует нечто принципиальное. При работе с NSTableViews существует ли простой способ использования свойств Swift, которые мне не хватает? valueForKey: не работает, нет простого способа сделать подобное отражению решение, о котором я знаю, и т. д. Любые предложения?

ответ

2

Свойства объекта можно связать только с: dynamic, а ваш класс должен унаследовать от NSObject или реализовать NSObjectProtocol. Кроме того, nilable ценностных типов не допускается, так что вы не можете связать Int?

т.е. .:

class Card: NSObject { 
    dynamic var order: Int = -1 
    dynamic var tag: String = "0" 
    dynamic var comment: String? 
    dynamic var data: [String: NSNumber] 
} 
+0

Так я правильно в понимании того, что использование NSObject и динамическим делает valueForKey работать? Если это прекрасное решение, и я должен был наткнуться раньше. –

Смежные вопросы