gpt4 book ai didi

objective-c - 如何将 NSArray 转换为 NSMutableArray

转载 作者:太空狗 更新时间:2023-10-30 03:13:26 25 4
gpt4 key购买 nike

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

NSMutableArray *tempPeoples=[[NSMutableArray alloc]init];

for(int i=0;i<nPeople;i++){

ABRecordRef i1=CFArrayGetValueAtIndex(allPeople, i);
[tempPeoples addObject:i1];

// [peoples addObject:i1];

}// end of the for loop
peoples=[tempPeoples copy];

此代码给出异常 b/c 我想将 NSMutableArray 转换为 NSArray请帮忙

最佳答案

主题是“如何将 NSArray 转换为 NSMutableArray”。要从 NSArray 获取 NSMutableArray,请使用 NSMutableArray +arrayWithArray 上的类方法:。

您的代码没有显示人民声明。假设它被声明为 NSMutableArray,如果您尝试这样对待它,您可能会遇到问题。当您将复制消息发送到 NSMutableArray 时,您会得到一个不可变对象(immutable对象) NSArray,因此如果您尝试将对象添加到复制的 NSMutableArray >,你会得到一个错误。

CFArrayRef 是免费桥接到 NSArray 的,所以你可以这样简化你的代码:

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
//NSMutableArray *tempPeoples = [NSMutableArray arrayWithArray:(NSArray*)allPeople];
// even better use the NSMutableCopying protocol on NSArray
NSMutableArray *tempPeoples = [(NSArray*)allPeople mutableCopy];
CFRelease(allPeople);
return tempPeoples; // or whatever is appropriate to your code

在上面的代码中,tempPeoples 是一个自动释放的 NSMutableArray,您可以根据需要添加或删除对象。

关于objective-c - 如何将 NSArray 转换为 NSMutableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4569478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com