从函数中收集字符串值

时间:2013-05-31 06:38:45

标签: iphone ios objective-c nsstring

嗨我有一个功能,我将从书籍列表中收集名字姓氏和电话号码

- (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
{
    }

4 个答案:

答案 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

干杯!