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请帮助
发布于 2010-12-31 19:54:30
主题是“如何将NSArray
转换为NSMutableArray
”。要从NSArray
获取NSMutableArray
,请使用NSMutableArray
+arrayWithArray
:上的类方法。
您的代码没有显示peoples的声明。假设它被声明为NSMutableArray
,如果您试图这样对待它,您可能会遇到问题。当您将复制消息发送到NSMutableArray
时,您会得到一个不可变的对象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
,您可以根据需要添加或删除对象。
发布于 2017-11-27 19:09:38
很简单,你可以做到这一点
NSArray *yourArray ; // Static Array
NSMutableArray* subArrayData = [yourArray mutableCopy];
https://stackoverflow.com/questions/4569478
复制相似问题