Ali*_*Ali 20 objective-c nsmutablearray nsarray
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];
Run Code Online (Sandbox Code Playgroud)
此代码提供异常b/c我想将NSMutableArray转换为NSArray请帮助
sea*_*ard 40
主题为"如何转换NSArray
为NSMutableArray
".为了得到一个NSMutableArray
从NSArray
,请使用类方法NSMutableArray
+ arrayWithArray
.
您的代码不会显示人们的声明.假设它被声明为NSMutableArray
,如果您尝试将其视为一个问题,则可能会遇到问题.当您将复制消息发送到a时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
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,tempPeoples是一个自动释放的,NSMutableArray
可以根据需要添加或删除对象.
归档时间: |
|
查看次数: |
39442 次 |
最近记录: |