我是iPhone应用程序开发的新手。我的应用程序有自己的联系人屏幕,其中包含电话簿的所有联系人以及单个列表中的应用程序联系人。 我的应用程序应该将所有联系人存储在其数据库中,它不应该显示联系人选择器打开的联系人屏幕。 为此,我创建了联系实体,以便在我的应用程序的持久存储中存储联系人。 我使用AddessBook API阅读了iphone的联系人。我在这方面遇到了一些问题。
存储联系人图像时出现问题:要获取联系人图像,我使用了ABPersonCopyImageData。它返回CFDataRef。我们如何将CFDataRef存储在数据库中并检索它。因为实体的属性类型中只有原始数据类型可用(NSArry类型不可用)。
存储多值属性时出现问题:如果任何联系人有多个号码,那么我们会收到多个号码值。核心数据中是否有可用的API或机制?或者我们必须使用自定义机制来存储它们,例如使用分隔符。
答案 0 :(得分:1)
如果我是你,那么我会将图像存储在文件目录中,将CFDataRef转换为NSData,然后再转换为UIImage 您可以将CFDataRef转换为NSData,就像这样
NSData *myData = (NSData *)myCFDataRef;
然后像这样将其转换为UIImage
UIImage *image=[UIImage imageWithData:myData];
并将其存储在文件目录中,其名称与test_1.png不同,其中1为intiger,每次为新图像名称增加
并且在数据库存储中只有位置字符串
答案 1 :(得分:0)
问题1: - 您可以将CFDataRef转换为UIImage并使用数据类型将其存储在数据库中 的 “可变形的”强>
问题2: - 您必须使用任何分隔符保存它,或者您可以为其创建不同的属性。
希望这对你有所帮助。