首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建AddressBook拷贝

创建AddressBook拷贝
EN

Stack Overflow用户
提问于 2011-04-19 03:48:36
回答 1查看 534关注 0票数 1

我希望将所有iPhone通讯簿联系人复制到一个数组中,然后将此数组写入文件。我已经编写了以下代码并将其连接到一个按钮,但是当我点击这个按钮时,我的应用程序崩溃了。

请帮我解决这个问题。

我的方法是:

代码语言:javascript
复制
-(NSString *)pathOfFile{
    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
    NSString *documentsDirectory=[paths objectAtIndex:0];
    return [documentsDirectory stringByAppendingFormat:@"contacts.plist"];
}


-(IBAction)createAddressBookCopy{

    ABAddressBookRef addressBook = ABAddressBookCreate();

    CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
    CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);

    NSMutableArray *masterList = [[NSMutableArray alloc] init];
    for (int i = 0; i < nPeople; i++) {
        ABRecordRef ref = CFArrayGetValueAtIndex(allPeople, i);
        CFStringRef fName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
        CFStringRef lName = ABRecordCopyValue(ref, kABPersonLastNameProperty);
        NSString *contactFirstLast = [NSString stringWithFormat: @"%@", (NSString *)fName];

        CFRelease(fName);
        CFRelease(lName);
        [masterList addObject:contactFirstLast];
        [contactFirstLast release];
    }

    //self.list = masterList;
    [masterList writeToFile:[self pathOfFile] atomically:YES];

    [masterList release]; 

}  

**这里我只保存了名字;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-19 04:15:47

看看你的代码:

代码语言:javascript
复制
NSString *contactFirstLast = [NSString stringWithFormat: @"%@", (NSString *)fName];
// ....
contactFirstLast release];  // this is wrong

当您创建contactFirstLast时,您并不拥有它,您正在发布它。这就是你的应用程序崩溃的原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5708060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档