Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将联系人存储在iphone中自己的应用程序中_Iphone_Ios_Core Data_Abaddressbook - Fatal编程技术网

将联系人存储在iphone中自己的应用程序中

将联系人存储在iphone中自己的应用程序中,iphone,ios,core-data,abaddressbook,Iphone,Ios,Core Data,Abaddressbook,我是iPhone应用程序开发新手。我的应用程序有自己的联系人屏幕,其中有电话簿的所有联系人,也有单一列表中的应用程序联系人。 我的应用程序应该将所有联系人存储在其dataabse中,它不应该像联系人选择器打开一样显示联系人屏幕。 为此,我创建了联系人实体,将联系人存储在应用程序的持久存储中。 我使用AddessBook API阅读了iphone的联系人。我在这方面面临一些问题 存储联系人图像时出现问题:为了获取联系人图像,我使用了ABPersonCopyImageData。它返回CFDataRe

我是iPhone应用程序开发新手。我的应用程序有自己的联系人屏幕,其中有电话簿的所有联系人,也有单一列表中的应用程序联系人。 我的应用程序应该将所有联系人存储在其dataabse中,它不应该像联系人选择器打开一样显示联系人屏幕。 为此,我创建了联系人实体,将联系人存储在应用程序的持久存储中。 我使用AddessBook API阅读了iphone的联系人。我在这方面面临一些问题

  • 存储联系人图像时出现问题:为了获取联系人图像,我使用了ABPersonCopyImageData。它返回CFDataRef。我们如何将CFDataRef存储在数据库中并检索它。因为实体的属性类型中只有基本数据类型可用(NSArry类型不可用)

  • 存储多值属性时出现问题:若任何联系人都有多个号码,那个么我们会收到多个号码值。核心数据中是否有可用的API或机制?或者我们必须使用自定义机制来存储它们,比如使用分隔符


  • 问题1:-您可以将CFDataRef转换为UIImage,并使用数据类型将其存储在数据库中 “可转换的”

    问题2:-您必须使用任何delimeter保存,或者您可以为此创建不同的属性


    希望这对您有所帮助。

    如果我是您,我会将图像存储在文档目录中,将CFDataRef转换为NSData,然后再转换为UIImage 您可以像这样简单地将CFDataRef转换为NSData

    NSData *myData = (NSData *)myCFDataRef;
    
    UIImage *image=[UIImage imageWithData:myData];
    
    然后像这样将其转换为UIImage

    NSData *myData = (NSData *)myCFDataRef;
    
    UIImage *image=[UIImage imageWithData:myData];
    
    并以不同的名称将其存储在文档目录中,如test_1.png,其中1是intiger,您每次为新图像名称递增该值


    在数据库中仅存储位置字符串

    如果谈论NSUserDefaults,则可以存储转换为NSData或base64字符串的图像。另外,“number”属性实际上不是一个数字数组吗?我不能为它创建不同的属性,因为联系人对于不同的标签有任意数量的联系人号码。这是否可能使用核心数据的关系?你可以创建与另一个实体的关系,并可以存储该实体中的所有联系人号码。你能给出解决问题1的任何链接或示例吗。NSData*dataObj=(NSData*)CFDATAREFBJ;UIImage*imageObj=[UIImage imageWithData:dataObj];或者你可以参考。之后,只需使用数据类型“Transformable”将“imageObj”存储在您所尊重的实体中。对于存储UIImage,您可以参考示例代码。希望对您有所帮助。