gpt4 book ai didi

c++ - 如何在我的 Symbian 应用程序中检查有效的联系人 ID?

转载 作者:太空宇宙 更新时间:2023-11-04 14:23:02 24 4
gpt4 key购买 nike

在我的应用程序中,我有两个 View ,主视图和联系人 View ,并且我有一个已保存的联系人 ID。

当我加载我的第二个 View 时,它应该使用我保存的 ID 列表访问默认的联系人数据库并获取这些联系人信息标题等。它离开是因为联系人已被删除。

那么,在我尝试访问其字段并导致休假之前,如何检查我拥有其 ID 的联系人是否存在?

CContactDatabase* contactsDb = CContactDatabase::OpenL();           
CleanupStack::PushL(contactsDb);

for (TInt i = 0; i < CsIDs.Count(); i++)// looping through contacts.
{

TRAPD(err, contactsDb->ReadContactL(CsIDs[i])) //---->CsIDs is an array that holds IDs

if(KErrNotFound == err)

{

CsIDs.Remove(i);

}

}
CleanupStack::PopAndDestroy(1,contactsDb);

最佳答案

感谢 Abhijith 的帮助,我弄清楚了这个问题背后的原因,我不应该打电话

For循环 TRAPD下的

ReadContactL,所以我创建了一个检查ID有效性的函数

我在 TRAPD 下调用它,现在我的联系人 ListView 加载良好,并且从

中删除了无效 ID

我保存的 ID 列表。

解决方案是在处理“离开”时遵循 Symbian C++ 规则:

void LoadContactsL()
{
CContactDatabase* contactsDb = CContactDatabase::OpenL();
CleanupStack::PushL(contactsDb);

for (TInt i = 0; i < CsIDs.Count(); i++)// looping through contacts.
{

TRAPD(err, ChickValidContactsIDL(i)) //-->Calling IDs checking function under TRAPD

if(KErrNotFound == err)

{

CsIDs.Remove(i);

}

}
CleanupStack::PopAndDestroy(1,contactsDb);
}

//检查无效 ID 的函数。

//重要的 Symbian 规则:对于在 TRAP harness 下“Leave”的函数返回“void” .

void ChickValidContactsIDL(TInt index)
{
CPbkContactEngine* iPbkEngine = CPbkContactEngine::NewL(&iEikonEnv->FsSession());
CleanupStack::PushL(iPbkEngine);
iPbkEngine->OpenContactL(CsIDs[index]);
CleanupStack::PopAndDestroy(1,iPbkEngine);
}

关于c++ - 如何在我的 Symbian 应用程序中检查有效的联系人 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6092113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com