Отображать логическое значение как true/false вместо 1/0 в NSTableView

В реализацииNSTableViewDataSource метод

func tableView(tableView: NSTableView!, objectValueForTableColumn tableColumn: NSTableColumn!, row: Int) -> AnyObject!

, возвращаемый результат для столбца является родным Swift Boolтипизированное значение. Я ожидал, что это отображается как true или же false в табличном представлении. Тем не менее, это на самом деле отображается как 1 или же 0, Я думаю, это могло быть приведено к AnyObject и стал объектом Obj-C. Какой простой способ сделать их отображаемыми как true или же false в табличном представлении?

1 ответ

Решение

Цель-C Bool тип на самом деле signed char под одеялом.

objc.h:typedef signed char BOOL; 
objc.h:#define YES             ((BOOL)1)
objc.h:#define NO              ((BOOL)0)

Поэтому, когда вы возвращаете это как объект, вы на самом деле возвращаете что-то, что приводится к NSInteger, поэтому он показывает 0 или же 1,

Чтобы решить эту проблему, измените метод объекта, чтобы он возвращал

return theBoolValue ? @"true" : @"false"
Другие вопросы по тегам