index 0 beyond bounds for empty array' *** 首先抛出调用堆栈:
index 0 beyond bounds for empty array' *** First throw call stack:
我收到如下错误,请帮助我提前谢谢,这是错误,我得到的索引 0 超出了空数组的界限' *** 首先抛出调用堆栈:--->>
下面是我的代码:
-(void)retriveContactsFromAddressBook
{
//CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
if (addressBook!=nil)
{
NSArray *allContacts=(__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
NSUInteger i=0;
for ( i = 0; i<[allContacts count]; i++)
{
ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];
NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);
NSString *lastName=(__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);
if (i==0) {
self.FirstName=[NSMutableArray arrayWithObject:firstName];
if (lastName==nil) {
self.LastName=[[NSMutableArray alloc]init];
} else {
self.LastName=[NSMutableArray arrayWithObject:lastName];
}
} else {
[self.FirstName addObject:firstName];
if (lastName==nil) {
[self.LastName addObject:@""];
} else {
[self.LastName addObject:lastName];
}
}
NSString *full=[NSString stringWithFormat:@"%@ %@",[self.FirstName objectAtIndex:i],[self.LastName objectAtIndex:i]];
if (i==0) {
self.fullName=[NSMutableArray arrayWithObject:full];
} else {
[self.fullName addObject:full];
}
}
}
else
{
NSLog(@"Error Address book empty");
}
}
我收到如下错误信息---->>>
>Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x2ce265f7 0x3a560c77 0x2cd3a157 0x126419 0x125edb 0x125cb7 0x302ce46d 0x30378325 0x3037824d 0x303777d1 0x3037750b 0x30377271 0x30377209 0x302cb97f 0x2fcf6f65 0x2fcf2951 0x2fcf27d9 0x2fcf21c7 0x2fcf1fd1 0x2fcebedd 0x2cded015 0x2cdea6f9 0x2cdeaafb 0x2cd37b31 0x2cd37943 0x340f0051 0x3032d6f1 0x1e1ea9 0x3aafcaaf)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
Nayeemuddin 您正在访问一个没有内容的数组,因此发生了异常。
NSString *full=[NSString stringWithFormat:@"%@ %@",[self.FirstName objectAtIndex:i],[self.LastName objectAtIndex:i]];
此处您正在访问不存在的数组对象。
你也忘了初始化第二个数组,
self.LastName=[[NSMutableArray alloc]init];
您需要在分配姓氏数组时插入一个空条目。
for ( i = 0; i<[allContacts count]; i++)
{
ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];
NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);
NSString *lastName=(__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);
if (i==0) {
self.FirstName=[NSMutableArray arrayWithObject:firstName];
if (lastName==nil) {
self.LastName=[[NSMutableArray arrayWithObject:@""]; // <--- This
} else {
self.LastName=[NSMutableArray arrayWithObject:lastName];
}
} else {
[self.FirstName addObject:firstName];
if (lastName==nil) {
[self.LastName addObject:@""];
} else {
[self.LastName addObject:lastName];
}
}
-(void)retriveContactsFromAddressBook
{
//CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
self.LastName=[[NSMutableArray alloc]init];
self.FirstName=[[NSMutableArray alloc]init];
self.fullName=[NSMutableArray arrayWithObject:full];
if (addressBook!=nil)
{
NSArray *allContacts=(__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
NSUInteger i=0;
for ( i = 0; i<[allContacts count]; i++)
{
ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];
NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);
NSString *lastName=(__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);
if (firstName == nil) {
[self.FirstName addObject:@""];
} else {
[self.FirstName addObject:firstName];
}
if (lastName==nil) {
[self.LastName addObject:@""];
} else {
[self.LastName addObject:lastName];
}
NSString *full=[NSString stringWithFormat:@"%@ %@",[self.FirstName objectAtIndex:i],[self.LastName objectAtIndex:i]];
[self.fullName addObject:full];
}
}
else
{
NSLog(@"Error Address book empty");
}
}
这样使用..
self.LastName=[[NSMutableArray alloc]init];
这一行就是问题所在。如果姓氏为 nil,则表示您没有插入任何对象
NSString *full=[NSString stringWithFormat:@"%@ %@",[self.FirstName objectAtIndex:i],[self.LastName objectAtIndex:i]];
但是在这一行中 [self.LastName objectAtIndex:i]
你试图从有问题的空数组中检索对象...
我收到如下错误,请帮助我提前谢谢,这是错误,我得到的索引 0 超出了空数组的界限' *** 首先抛出调用堆栈:--->> 下面是我的代码:
-(void)retriveContactsFromAddressBook
{
//CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
if (addressBook!=nil)
{
NSArray *allContacts=(__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
NSUInteger i=0;
for ( i = 0; i<[allContacts count]; i++)
{
ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];
NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);
NSString *lastName=(__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);
if (i==0) {
self.FirstName=[NSMutableArray arrayWithObject:firstName];
if (lastName==nil) {
self.LastName=[[NSMutableArray alloc]init];
} else {
self.LastName=[NSMutableArray arrayWithObject:lastName];
}
} else {
[self.FirstName addObject:firstName];
if (lastName==nil) {
[self.LastName addObject:@""];
} else {
[self.LastName addObject:lastName];
}
}
NSString *full=[NSString stringWithFormat:@"%@ %@",[self.FirstName objectAtIndex:i],[self.LastName objectAtIndex:i]];
if (i==0) {
self.fullName=[NSMutableArray arrayWithObject:full];
} else {
[self.fullName addObject:full];
}
}
}
else
{
NSLog(@"Error Address book empty");
}
}
我收到如下错误信息---->>>
>Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 0 beyond bounds for empty array'
*** First throw call stack:
(0x2ce265f7 0x3a560c77 0x2cd3a157 0x126419 0x125edb 0x125cb7 0x302ce46d 0x30378325 0x3037824d 0x303777d1 0x3037750b 0x30377271 0x30377209 0x302cb97f 0x2fcf6f65 0x2fcf2951 0x2fcf27d9 0x2fcf21c7 0x2fcf1fd1 0x2fcebedd 0x2cded015 0x2cdea6f9 0x2cdeaafb 0x2cd37b31 0x2cd37943 0x340f0051 0x3032d6f1 0x1e1ea9 0x3aafcaaf)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb)
Nayeemuddin 您正在访问一个没有内容的数组,因此发生了异常。
NSString *full=[NSString stringWithFormat:@"%@ %@",[self.FirstName objectAtIndex:i],[self.LastName objectAtIndex:i]];
此处您正在访问不存在的数组对象。 你也忘了初始化第二个数组,
self.LastName=[[NSMutableArray alloc]init];
您需要在分配姓氏数组时插入一个空条目。
for ( i = 0; i<[allContacts count]; i++)
{
ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];
NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);
NSString *lastName=(__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);
if (i==0) {
self.FirstName=[NSMutableArray arrayWithObject:firstName];
if (lastName==nil) {
self.LastName=[[NSMutableArray arrayWithObject:@""]; // <--- This
} else {
self.LastName=[NSMutableArray arrayWithObject:lastName];
}
} else {
[self.FirstName addObject:firstName];
if (lastName==nil) {
[self.LastName addObject:@""];
} else {
[self.LastName addObject:lastName];
}
}
-(void)retriveContactsFromAddressBook
{
//CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
self.LastName=[[NSMutableArray alloc]init];
self.FirstName=[[NSMutableArray alloc]init];
self.fullName=[NSMutableArray arrayWithObject:full];
if (addressBook!=nil)
{
NSArray *allContacts=(__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);
NSUInteger i=0;
for ( i = 0; i<[allContacts count]; i++)
{
ABRecordRef contactPerson = (__bridge ABRecordRef)allContacts[i];
NSString *firstName = (__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonFirstNameProperty);
NSString *lastName=(__bridge_transfer NSString*)ABRecordCopyValue(contactPerson, kABPersonLastNameProperty);
if (firstName == nil) {
[self.FirstName addObject:@""];
} else {
[self.FirstName addObject:firstName];
}
if (lastName==nil) {
[self.LastName addObject:@""];
} else {
[self.LastName addObject:lastName];
}
NSString *full=[NSString stringWithFormat:@"%@ %@",[self.FirstName objectAtIndex:i],[self.LastName objectAtIndex:i]];
[self.fullName addObject:full];
}
}
else
{
NSLog(@"Error Address book empty");
}
}
这样使用..
self.LastName=[[NSMutableArray alloc]init];
这一行就是问题所在。如果姓氏为 nil,则表示您没有插入任何对象
NSString *full=[NSString stringWithFormat:@"%@ %@",[self.FirstName objectAtIndex:i],[self.LastName objectAtIndex:i]];
但是在这一行中 [self.LastName objectAtIndex:i]
你试图从有问题的空数组中检索对象...