12、格式化器与值转换器的使用指南

格式化器与值转换器的使用指南

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 。示例代码如下:


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值