格式化器与值转换器的使用指南
1. 格式化器的使用
格式化器用于将对象转换为单元格的文本,反之亦然。在处理“Favorite”列时,我们需要将Cocoa布尔值(如 #<NSCFBoolean true> 和 #<NSCFBoolean false> ,即1和0)转换为字符串“yes”和“no”,并在用户更改时将这些字符串转换回布尔值。
将布尔值转换为字符串很简单,示例代码如下:
class BooleanCellFormatter < OSX::NSFormatter
def stringForObjectValue(o)
o == true.to_ns ? "yes" : "no"
end
end
反向转换则稍微复杂一些,在进行反向转换前,需要了解一些关于内存和指针的知识。
在计算机芯片层面,没有对象的概念,只有从0开始编号的巨大内存数组。在Ruby中,变量通常是指向对象的内存槽地址,我们可以忽略对象地址和组成它的内存槽之间的差异。而在Objective - C中,变量可以指向另一个变量,Objective - C程序员在需要方法返回多个值时会使用这种方式。
在将单元格文本转换为对象的方法中,由于Objective - C不允许返回多个值,调用方法需要传递两个指针到指针的参数。Ruby没有指针到指针的概念,RubyCocoa将这样的参数转换为 ObjcPtr 。示例代码如下:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



