【问题标题】:How to retrieve 10-10 contacts from address book如何从通讯录中检索 10-10 个联系人
【发布时间】:2013-03-09 06:54:44
【问题描述】:

我想实现一次从通讯录中获取或加载 10 个联系人。可以从通讯录中检索所有联系人,但一次显示 10-10 个联系人。我正在检索图像、名字、姓氏在所有 iphone 联系人中。我想实现这个以电子邮件检索电子邮件联系人,也像 10-10 个电子邮件联系人。 这是我的示例代码:

SData *imageData = (NSData *)CFBridgingRelease(ABPersonCopyImageDataWithFormat(ref, kABPersonImageFormatThumbnail)) ;

            CFStringRef firstName1, lastName1;


            firstName1 = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
            lastName1  = ABRecordCopyValue(ref, kABPersonLastNameProperty);
            NSString *name=[[NSString alloc]init];


            if ([[NSString stringWithFormat:@"%@",firstName1] isEqualToString:@"(null)"] && [[NSString stringWithFormat:@"%@",lastName1] isEqualToString:@"(null)"])
            {

                name = @"No Name";
            }
            else if([[NSString stringWithFormat:@"%@",firstName1] isEqualToString:@"(null)"] && ![[NSString stringWithFormat:@"%@",lastName1] isEqualToString:@"(null)"])
            {

                name = [NSString stringWithFormat:@"%@",lastName1];
            }

           else
           {
                name = [NSString stringWithFormat:@"%@",firstName1];

           }

           name= [ name  capitalizedString];

            EmailandCotactsModel *emailmodel=[[EmailandCotactsModel alloc]init];
            emailmodel.emailemailstring=(__bridge NSString *)(contno);
            emailmodel.emailusernamestring=name;


            if(!imageData)
            {
                NSString *path = [[NSBundle mainBundle] pathForResource:@"NoImage" ofType:@"png"];
                NSData *photoData = [NSData dataWithContentsOfFile:path];
                emailmodel.emailimagesData=photoData;
            }
            else
            {
                emailmodel.emailimagesData=imageData;

            }


            [emailarray addObject:emailmodel];

            callsmsDataBool=NO;

            NSLog(@"table email count %d and i %d",emailarray.count,tablecountint);
            if(emailarray.count==tablecountint)
            {

                NSLog(@"table email reload");

                tablecountint=tablecountint+10;

                dispatch_async( dispatch_get_global_queue(0,0),^{
                    [self reloadtable];
                });

                NSLog(@"perform selection in bg");

            }

        }
    }


    [self.tableview reloadData];


   if(!emailarray.count && [socialstring isEqualToString:@"Email"])
   {
       selectedlabel.text=@"Emails not found";
   }
   else if(emailarray.count && [socialstring isEqualToString:@"Email"])
   {
      // selectedlabel.text=@"Email";

       selectedlabel.text=[NSString stringWithFormat:@"%ld",nPeople];
   }
   else if(!emailarray.count && [socialstring isEqualToString:@"SMS"])
   {
       selectedlabel.text=@"Phone no's not found";
   }
   else if(emailarray.count && [socialstring isEqualToString:@"SMS"])
   {
       selectedlabel.text=@"SMS";
   }
   else
   {
        selectedlabel.text=@"";
   }

    [tableview reloadData];

任何有价值的建议将不胜感激......

提前致谢。

【问题讨论】:

    标签: iphone ios objective-c addressbook


    【解决方案1】:

    在一个数组中获取所有联系人后,将十个联系人复制到另一个数组,并使用该新数组调用表重新加载方法,方法是最初调用该方法 lowerlimit = 0 和 upperlimit=10;

    -(void)tabledataloadingmethod
    {
        for (lowerlimit=0+lowerlimit; lowerlimit<upperlimit; lowerlimit++)
        {
            if (lowerlimit<[self.array1 count])
            {
                OBJECT *obj=[self.array1 objectAtIndex:lowerlimit];
                [self.array2 addObject:obj];
    
            }
    
        }
        [self.tbleview reloadData];
    
    }  
    

    在table delagete方法cellforrowatindex中使用这个

        if ([self.array2 count]==indexPath.row)
                {
    
    
                    UITableViewCell *cell1=[self.tbleview dequeueReusableCellWithIdentifier:@"cells"];
                    if(cell1==nil)
                    {
                        cell1=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"Cells"];
                    }
    
                    cell1.textLabel.textColor = [UIColor whiteColor];
                    cell1.textLabel.text=@"Loading more...";
    
                    [self performSelector:@selector(loadmorecells) withObject:nil afterDelay:0.2];
    
    
    
                    return cell1;
      }    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
    
        if ([self.array2 count]>0 && ([self.array2 count]<[self.array1 count]))
        {
            return [self.array2 count]+1;
        }
        else
        {
            return [self.array2 count];
        }
    } 
    

    这里我们在 loadmorecells 方法中增加下限和上限

    -(void)loadmorecells
        {
    
            lowerlimit = upperlimit;
    
            upperlimit = upperlimit +10;
            [self tabledataloadingmethod];
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多