如果 一本地址簿 只能添加 地址卡片,而 不能删除 地址卡片,那么 这样的地址簿 是 不完整的。我们 可以制定 一项叫做removeCard:的措施 将 地址簿中的某张地址卡片 删除。首先 我们 在AddressBook.h这个文件当中 添加 下面一行语句:
然后 再 在AddressBook.m这个文件当中 描述 removeCard:这项措施 具体 是 如何实施的:
在removeCard:这项措施当中,我 对其实施对象中所包含的数组物件book 采取了 removeObjectIdenticalTo:这项措施。需要删除的卡片,也就是 AddressCard类型的物件, 存储 在变量card当中。removeObjectIdenticalTo:这项措施 会将 其实施对象中与参数完全相同的物件 删除。
接着 我们 在具体的程序当中 测试一下 removeCard:这项措施 是否能 正常 工作:
运行 这个程序后,可以得到 这样的结果:
在这个程序当中,我 先 对myBook这个物件 采取了 list这项措施,将 其内容 显示出来。接着 对myBook这个物件 采取了 removeCard:这项措施 并且 附带了 cardOne这个物件 作为参数,将 地址簿中的第一张卡片 删除。最后 再次 对myBook这个物件 采取了 list这项措施,将 其内容 显示出来,以验证 removeCard:这项措施 是否起了 作用。
从程序的运行结果 可以看出 在myBook这个地址簿当中 第一张卡片 和 第二张卡片的内容 是 完全 一样的。但是 removeCard:这项措施 只 删除了 其中一张卡片。为了解决 这个问题,我们 需要将 removeCard:这项措施当中的removeObjectIdenticalTo:这项措施 换成 removeObject:这项措施,就像 这样:
在removeCard:这项措施当中 removeObject:这项措施 会对 book这个数组物件中的地址卡片 采取 isEqual:这项措施,以判断 book这个数组物件中的地址卡片 与 需要删除的地址卡片 是否一致。于是 我们 需要 重新 编写 isEqual:这项措施。由于 book这个数组物件当中的地址卡片 属于 AddressCard类型的物件。于是 重新编写的isEqual:这项措施 必须适用于 AddressCard这类物件。所以 首先 在AddressCard.h这个文件中 添加 下面这行语句:
同时 在AddressCard.m这个文件中 添加 isEqual:这项措施的实施过程:
isEqual:这项措施 会判断 其实施对象中的姓名 和 邮箱地址 与 其参数中的姓名 和 邮箱地址 是否 一致,如果 一致,就将 YES 作为结果 传递回去;如果 不一致,就将 NO 作为结果 传递回去。
我们 运行一下 经过修改的程序,看看 会得到 什么样的结果:
1
2
3
4
5
6
7
8
9
10
|
2012-04-26 16:09:12.148 Sample[1572:707] ========Zijin's Address Book的内容========
2012-04-26 16:09:12.150 Sample[1572:707] Julia Kochan jewls337@axlc.com
2012-04-26 16:09:12.151 Sample[1572:707] Julia Kochan jewls337@axlc.com
2012-04-26 16:09:12.151 Sample[1572:707] Jamie Baker jbaker@kochan-wood.com
2012-04-26 16:09:12.152 Sample[1572:707] Zijin Zhang 540596744@qq.com
2012-04-26 16:09:12.152 Sample[1572:707] =========================================
2012-04-26 16:09:12.153 Sample[1572:707] ========Zijin's Address Book的内容========
2012-04-26 16:09:12.153 Sample[1572:707] Jamie Baker jbaker@kochan-wood.com
2012-04-26 16:09:12.153 Sample[1572:707] Zijin Zhang 540596744@qq.com
2012-04-26 16:09:12.154 Sample[1572:707] =========================================
|
在运行结果当中,内容完全一致的第一张卡片 和 第二张卡片 都被删除了,我们的目的 达到了。