使用自定义标签获取日期值的最快方法?

时间:2009-11-09 15:19:07

标签: iphone

在通讯录中我设置了一个带有自定义标签的日期字段(编辑联系人时,选择添加字段 - >日期 - >周年纪念 - >添加自定义标签)。

它存储在ID“kABPersonDateProperty”的ABMultiValue属性中,标签为(例如)“Next Appointment”。

ABMultiValue API具有告诉我索引处的标签名称,读取索引处的值以及在ID /索引之间转换的功能。

请原谅我,如果我在这里很厚,但是获得“下一个约会”日期的最快方法是迭代Multivalue字段,寻找匹配标签的索引,然后复制该索引处的属性值?据我所知,指数会因记录而异。

我意识到有一个从属性ID获取索引的函数,但这意味着在早些时候我必须通过遍历所有尝试使用'Next Appointment'找到一个的记录来发现propertyID在其中获取其属性的字段。

我想在tableview中查看日期并对其进行排序,因此我需要尽可能高效地获取值。有没有人有一个快速执行此操作的方法,最好使用示例代码或链接获取更多信息?

1 个答案:

答案 0 :(得分:0)

您描述的方法是正确的。您将需要从iPhone OS的地址簿编程指南中执行类似于Apple的multivalue properties示例代码:

CFStringRef phoneNumber, phoneNumberLabel;
multi = ABRecordCopyValue(aRecord, kABPersonPhoneProperty);

for (CFIndex i = 0; i < ABMultiValueGetCount(multi); i++) {
    phoneNumberLabel = ABMultiValueCopyLabelAtIndex(multi, i);
    phoneNumber      = ABMultiValueCopyValueAtIndex(multi, i);

    /* ... do something with phoneNumberLabel and phoneNumber ... */

    CFRelease(phoneNumberLabel);
    CFRelease(phoneNumber);
}

CFRelease(aRecord);
CFRelease(multi);