0
  • 我正在尝试将所有联系人备份到服务器上。

  • 因此,我将联系人转换为 vCard 字符串并将 vCard 字符串发送
    到服务器,并将带有 RecordID 的 vCard 字符串存储到 sqlite 数据库中

  • 因此,当用户第一次想要备份所有联系人时,将转到服务器和数据库中。

  • 从第二次开始,我只想将新联系人发送到服务器。所以我需要将存储在nsarray中的数据库RecordIds与电话簿RecordIds进行比较,并将新的RecordIds放入一个数组中

  • 例如,我有像 40,41,42,43,44,45 这样的 RecordIds 进入 dbarray。不一定按顺序或顺序。

  • 现在当用户添加 5 个新联系人时,电话簿数组将包含诸如 40、41、42、43、44、45、46、47、48、50 之类的记录 ID

  • 所以这次我只想发送recordIds 46,47,48,49和50的联系人。类似于增量备份

  • 我还需要检查存储的 vCard 中是否有任何修改。所以我还需要比较电话簿数组和数据库数组中的所有 vCard 字符串。

    我是 iOS 编程新手,我被困住了。请帮忙!!!这很紧急

4

1 回答 1

0

我通过使用以下代码解决了上述问题。希望它对某人有所帮助。

 -(void)newContactsAndContactsToUpdate
  {
    NSMutableArray *newContact = [[NSMutableArray alloc]init];
    NSMutableArray *newContactRecIds = [[NSMutableArray alloc]init];
    NSMutableArray *updateContactRecIds = [[NSMutableArray alloc]init];
    NSMutableArray *updateContactRecIds = [[NSMutableArray alloc]init];
    //dataArray contains all the contacts(converted into Vcard strings) in the phonebook
    //recordIDArray contains the all recordids in the phonebook
    //dbArraywithRID contains the recordids stored in database.
    //dbArraywithVcard contains  contacts(converted into Vcard strings)stored in database
    for(int i=0;i< dataArray.count;i++)
    {
    BOOL found = NO;
    int phoneBookRecId=[[recordIDArray objectAtIndex:i] intValue];


    NSString * currentPhVc=[dataArray objectAtIndex:i];

    for(int j=0;j< dbArraywithRID.count;j++)
    {
        int dbRecId=[[dbArraywithRID objectAtIndex:j] intValue];

        if(dbRecId == phoneBookRecId)
        {
            found =YES;

            NSString * currentDBVc=[dbArraywithVcard objectAtIndex:j];

            if(![currentDBVc isEqualToString:currentPhVc])
            {
                NSLog(@" db rec  =%@    -   %@   ",currentDBVc,currentPhVc );
                [updateContactRecIds addObject:[NSNumber numberWithInt:phoneBookRecId]];

                [newContact addObject:currentPhVc];
                [newContactRecIds addObject:[NSNumber numberWithInt:phoneBookRecId]];

            }
            break;
        }
    }
    if(!found)
    {
        [newContact addObject:currentPhVc];
        [newContactRecIds addObject:[NSNumber numberWithInt:phoneBookRecId]];

    }
}


if(newContact!=nil && [newContact count] > 0)
{
    //newContact array contains all the contacts(vcard strings) that are new

}
if(updateContactRecIds!=nil && [updateContactRecIds count] > 0)
{
    updateContactRecIds contains all the recordids which need to be updated
}

}

于 2012-11-08T10:18:32.573 回答