2011-04-15 29 views
1

这是非常特殊的情况。我相信有人已经在某个地方解决了这个问题,但要找到它并不容易。如何使用ABUnknownPersonViewController与生成intially输入的数据?

的情况:

1)一个对象将返回NSString对象的名称地址1,地址,电话:

[anObject name]; 
[anObject address1]; 
[anObject address2]; 
[anObject name]; 

2)我想用这些对象与最初输入的值准备ABUnknownPersonViewController ,所以用户在将它们保存在地址簿中之前不必输入它们。

我已经看过IOS文件,并通过谷歌和StackOverflow上搜索,找不到这种简单的情况下正确的答案。

任何人都可以指导我吗?

回答

2

找到了答案:它很好地记录在iOS开发库: http://developer.apple.com/library/ios/#samplecode/QuickContacts/Listings/Classes_QuickContactsViewController_m.html#//apple_ref/doc/uid/DTS40009475-Classes_QuickContactsViewController_m-DontLinkElementID_6

这里是一个示例代码,我实现返回一个ABPersonRecordRef作为对象。我遇到的错误与返回后未保留ABPersonRecordRef对象有关。

- (id)personRecordUsingModelObj:(id)modelObj { 
    ABRecordRef aContact = ABPersonCreate(); 
    CFErrorRef anError = NULL; 

    NSString *name = [NSString stringWithFormat:@"%@", [modelObj name]]; 
    ABRecordSetValue(aContact, kABPersonOrganizationProperty, name, &anError); 

    ABMultiValueRef phone = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
    ABMultiValueAddValueAndLabel(phone, [modelObj phone], kABPersonPhoneMainLabel, NULL); 

    ABRecordSetValue(aContact, kABPersonPhoneProperty, phone, &anError); 
    CFRelease(phone); 

    NSString *address = [NSString stringWithFormat:@"%@ %@", [modelObj addr1], [modelObj addr2]]; 
    NSMutableDictionary *dictionaryAddress = [[NSMutableDictionary alloc] initWithCapacity:0]; 
    [dictionaryAddress setObject:address forKey:(NSString *)kABPersonAddressStreetKey]; 
    [dictionaryAddress setObject:@"us" forKey:(NSString *)kABPersonAddressCountryCodeKey]; 

    ABMutableMultiValueRef address = ABMultiValueCreateMutable(kABDictionaryPropertyType); 
    ABMultiValueAddValueAndLabel(address, dictionaryAddress, kABPersonAddressStreetKey, NULL); 
    [dictionaryAddress release]; 

    ABRecordSetValue(aContact, kABPersonAddressProperty, address, &anError); 
    CFRelease(address); 

    if (anError) { 
     aContact = nil; 
    } 

    [(id)aContact autorelease]; 

    return (id)aContact; 
} 
相关问题