在通讯录中我设置了一个带有自定义标签的日期字段(编辑联系人时,选择添加字段 - >日期 - >周年纪念 - >添加自定义标签)。
它存储在ID“kABPersonDateProperty”的ABMultiValue属性中,标签为(例如)“Next Appointment”。
ABMultiValue API具有告诉我索引处的标签名称,读取索引处的值以及在ID /索引之间转换的功能。
请原谅我,如果我在这里很厚,但是获得“下一个约会”日期的最快方法是迭代Multivalue字段,寻找匹配标签的索引,然后复制该索引处的属性值?据我所知,指数会因记录而异。
我意识到有一个从属性ID获取索引的函数,但这意味着在早些时候我必须通过遍历所有尝试使用'Next Appointment'找到一个的记录来发现propertyID在其中获取其属性的字段。
我想在tableview中查看日期并对其进行排序,因此我需要尽可能高效地获取值。有没有人有一个快速执行此操作的方法,最好使用示例代码或链接获取更多信息?
答案 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);