嗨我有一个功能,我将从书籍列表中收集名字姓氏和电话号码
- (void)getnames
{
ABAddressBookRef addressBook = ABAddressBookCreate();
if (addressBook != nil)
{
NSLog(@"Succesful.");
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);
NSLog(@"FirstNAme::::: LastNAME::::::EMail::: %@ %@",firstName,lastName);
}
所以从上面的函数我在检查 NSLog 时会得到这么多的名字和姓氏列表。所以我的要求是如何以数组或列表的形式显示下面 DisplayNames 函数中的所有名字和姓氏。所以任何人都可以给我打电话代码。我会收集所有的名字和上述函数的姓氏。
-(void)Displaynames
{
}
答案 0 :(得分:0)
在getNames方法中..你有一个联系人数组..通过它迭代和打印日志..为什么不将getNames方法的返回类型更改为NSArray并在Displaynames中使用它?
答案 1 :(得分:0)
将自定义类设置为“User”,在其中声明诸如firstName,lastName等的属性。因此,在您的getnames方法中,创建自定义“User”类的对象并分配相应的属性,最后将“User”对象分配给全局可变数组。使用该数组并迭代它以获取 - (void)displayNames方法中用户的所有详细信息。简单。
P.S。使用适当的命名约定进行方法声明。
干杯!!
答案 2 :(得分:0)
有两个选项:
首先,最简单:
NSUInteger i = 0;
NSMutableArray *namelist = [NSMutableArray array];
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);
[namelist addObject:[NSString stringWithFormat:"%@ %@",firstName, lastName]];
[self Displaynames:namelist];
}
并在displaynames:
-(void)displaynames:(NSMutableArray*)names{
for(NSString* name in names){
NSLog(@"%@",name);
}
}
缺点是你不能使用分隔的第一个/最后一个名字。如果您需要,请使用以下代码:
NSUInteger i = 0;
NSMutableArray *namelist = [NSMutableArray array];
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);
NSMutableArray *name = [NSMutableArray array];
[name addObject:firstName];
[name addObject:lastName];
[namelist addObject:name];
[self Displaynames:namelist];
}
和Displaynames:
-(void)displaynames:(NSMutableArray*)names{
for(NSMutableArray* name in names){
NSLog(@"%@ %@",[name objectAtIndex:0],[name objectAtIndex:1]);
}
}
此代码在我的浏览器中写入,因此未经验证。
答案 3 :(得分:0)
- (NSArray *)getnames { ABAddressBookRef addressBook = ABAddressBookCreate();
if(addressBook!= nil){ 的NSLog(@ “成功的。”);
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); NSLog(@"FirstNAme::::: LastNAME::::::EMail::: %@ %@",firstName,lastName); } return allContacts; }
通过这种方式,您的数组中包含所有firstName和lastName,您可以在
中使用此数组Displaynames()
PS:在.h文件中声明allContacts
干杯!