2011-11-28 36 views
0

我能够仅向我的联系人添加展厅名称。但是,当我把代码添加电话号码,更多细节....我的代码崩溃。任何建议,将不胜感激。这里是我的代码代码在添加手机通讯录时发生崩溃查询

- (IBAction)AddContact 
{ 
ABAddressBookRef addressBook = ABAddressBookCreate(); 
ABRecordRef Showroom = ABPersonCreate(); 

//adding contact name as showroom name 
ABRecordSetValue(Showroom, kABPersonFirstNameProperty, ShowroomName.text , nil); 

//adding phone number 
ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
ABMultiValueAddValueAndLabel(multiPhone, p_BcardLabel.text, kABPersonPhoneMainLabel, NULL); 

ABRecordSetValue(Showroom, kABPersonPhoneProperty, multiPhone,nil); 
CFRelease(multiPhone); 
//adding emailaddress 
ABMutableMultiValueRef multiEmail = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
ABMultiValueAddValueAndLabel(multiEmail, email_BcardLabel.text, kABWorkLabel, NULL); 
ABRecordSetValue(Showroom, kABPersonEmailProperty, multiEmail, @""); 
CFRelease(multiEmail); 

//adding URL 
ABMutableMultiValueRef multiURL = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
ABMultiValueAddValueAndLabel(multiURL, url_BcardLabel.text, kABHomeLabel, NULL); 
ABRecordSetValue(Showroom, kABPersonURLProperty, multiURL, @""); 
CFRelease(multiURL); 

展会以下消息

[Switching to thread 11779] 
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.2 (8H7)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found). 

回答

1

如果只想提高你的代码。我检查一次你的代码,其优良的工作只需添加以下行

ABAddressBookAddRecord(addressBook,Showroom, nil); 


    ABAddressBookSave(addressBook,nil); 

    objABPersonViewController=[[ABUnknownPersonViewController alloc]init]; 

    objABPersonViewController.displayedPerson=Showroom; 

    [self.navigationController pushViewController:objABPersonViewController animated:YES]; 


    CFRelease(Showroom); 

如果你想用我检查了这一点。它还会将名为abc.png的图像从资源文件夹添加到联系人列表中。

-(IBAction)addToAddressbook:(id)sender{ 
     NSString *[email protected]"Person First Name"; 

     NSString *[email protected]"Person Last Name"; 

     NSArray *arrayAdd=[[NSArray alloc]initWithObjects:@"street Name",@"city Name",@"country code",@"zip",nil]; 

     UIImage *image=[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"abc.png" ofType:nil]]; 

     [self addContact:fname:lname:arrayAdd:image]; 
    } 

    -(void) addContact:(NSString *)firstname:(NSString *)lastname:(NSArray *)arrayAddress:(UIImage *)currentImage 
    { 
     ABAddressBookRef addressBook=ABAddressBookCreate(); 

     ABRecordRef person=ABPersonCreate(); 

     //set Image 
     NSData * dataRef = UIImagePNGRepresentation(currentImage); 

     ABPersonSetImageData(person, (CFDataRef)dataRef, nil); 

     //set FirstName and LastName 
     ABRecordSetValue(person, kABPersonFirstNameProperty,firstname, nil); 

     ABRecordSetValue(person, kABPersonLastNameProperty,lastname, nil); 


     //Add Address 
     ABMutableMultiValueRef address=ABMultiValueCreateMutable(kABMultiDictionaryPropertyType); 

     NSMutableDictionary *addressDictionary=[[NSMutableDictionary alloc]init]; 

     [addressDictionary setObject:[arrayAddress objectAtIndex:0] forKey:(NSString *)kABPersonAddressStreetKey]; 

     [addressDictionary setObject:[arrayAddress objectAtIndex:1]forKey:(NSString *)kABPersonAddressCityKey]; 

     [addressDictionary setObject:[arrayAddress objectAtIndex:2] forKey:(NSString *)kABPersonAddressCountryCodeKey]; 

     [addressDictionary setObject:[arrayAddress objectAtIndex:3] forKey:(NSString *)kABPersonAddressCountryKey]; 

     ABMultiValueAddValueAndLabel(address, addressDictionary, kABHomeLabel, nil); 

     ABRecordSetValue(person, kABPersonAddressProperty, address, nil); 

     ABAddressBookAddRecord(addressBook,person, nil); 

     ABAddressBookSave(addressBook,nil); 

     objABPersonViewController=[[ABUnknownPersonViewController alloc]init]; 

     objABPersonViewController.displayedPerson=person; 

     [self.navigationController pushViewController:objABPersonViewController animated:YES]; 


     CFRelease(person); 

    } 

任何进一步的查询只问...快乐帮

+0

我从Web服务获取联系人。 aMarker是我的属性... aMarker.name,aMarker.phone,aMarker.url等我正在采取我的button1,button2 ..标签和最后按钮添加联系人。我将在您的代码中进行更改以在我的应用程序中使用。请建议... –

+0

ahh问题解决......其实我正在传递“p_BcardLabel.text”至于我只设置了定义,但没有在UIview上进行。这是代码崩溃。现在工作正常... –

+0

但仍然感谢回答和快速回复coolanikothari :) –

0

这是回答你的问题Navnath。 Apple提供了ABNewPersonViewController来打开特定的添加联系人视图。在您的头文件中添加ABNewPersonViewControllerDelegate。

情况1:应用程序是基于视图: -

 -(IBAction)displayContactAddWindow:(id)sender{ 
    ABNewPersonViewController *picker = [[ABNewPersonViewController alloc] init]; 
    picker.newPersonViewDelegate = self; 

    UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:picker]; 
    [self presentModalViewController:navigation animated:YES]; 

    [picker release]; 
    [navigation release]; 
} 

壳体2:应用程序是基于导航: -

- (IBAction为)displayContactAddWindow:(ID)发送方{

ABNewPersonViewController *picker = [[ABNewPersonViewController alloc] init]; 

    picker.newPersonViewDelegate = self; 

    [self.navigationController pushViewController:picker animated:YES]; 

    [picker release]; 

    } 

- (void)newPersonViewController:(ABNewPersonViewController *)newPersonView didCompleteWithNewPerson:(ABRecordRef)person{ 

    [self.navigationController popViewControllerAnimated:YES]; 

} 
+0

其实它应该加载编辑与联系窗口我只是添加点击事件。因此,用户可以编辑或删除整个联系人....我做了上述类似于你说的但是它给出了警告警告:无法读取/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.2(8H7)/符号的符号/System/Library/Frameworks/IOKit.framework/IOKit(找不到文件)。 警告:试图删除不存在的库:/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.2(8H7)/Symbols/System/Library/Frameworks/IOKit.framework/IOKit –

+0

此外,没有默认删除编辑联系人窗口的方法?如果用户不想保存联系人,那么他可以删除... –