gpt4 book ai didi

ios - 无法通过测试用例 iOS 将数据插入 sqlite 数据库

转载 作者:行者123 更新时间:2023-11-30 17:50:35 24 4
gpt4 key购买 nike

我正在尝试通过测试用例将数据插入到 sqlite 数据库中的一个表中。

测试方法如下:

-(void)testAddContact2
{
[ContactsModel getInstance].mContactName = @"Arvind";
[ContactsModel getInstance].mContactNo = @"556";
[ContactsModel getInstance].mContactDob = @"July 10, 1988";
[ContactsModel getInstance].mContactGender = @"Male";
[ContactsModel getInstance].mContactEmail = @"arv@bnsad.co";
[ContactsModel getInstance].mContactLatitude = @"33";
[ContactsModel getInstance].mContactLongitude = @"44";

STAssertFalse(([[ContactsModel getInstance] addNewContact] == TRUE),@"passed");
}

这是我正在尝试测试的方法:

-(BOOL)addNewContact
{
BOOL tempFlag = NO;

sqlite3_stmt *statement;
sqlite3 *mDiaryTemp = nil;

const char *dbpath = [[UseDb getInstance].mDatabasePathDb UTF8String];

if (sqlite3_open(dbpath, &mDiaryTemp) == SQLITE_OK)
{
NSString *insertSQL1=[NSString stringWithFormat:@"INSERT INTO CONTACTS VALUES(\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\",\"%@\")",
[ContactsModel getInstance].mContactName,
[ContactsModel getInstance].mContactNo,
[ContactsModel getInstance].mContactGender,
[ContactsModel getInstance].mContactDob,
[ContactsModel getInstance].mContactEmail,
[ContactsModel getInstance].mContactLatitude,
[ContactsModel getInstance].mContactLongitude];

const char *insert_stmt1 = [insertSQL1 UTF8String];

sqlite3_prepare_v2(mDiaryTemp, insert_stmt1, -1, &statement, NULL);

NSString *tempName = [NSString stringWithFormat:@"%@",[ContactsModel getInstance].mContactName];
tempName = [tempName stringByAppendingString:@" "];

NSString *tempNo = [NSString stringWithFormat:@"%@",[ContactsModel getInstance].mContactNo];
tempName = [tempName stringByAppendingString:tempNo];

[[ShowContactsViewController getInstance].phoneContacts addObject:tempName];

NSLog(@"%d",[[ShowContactsViewController getInstance].phoneContacts count]);

// NSLog(@"%d",sqlite3_step(statement));
if (sqlite3_step(statement) == SQLITE_DONE)
{
sqlite3_finalize(statement);
sqlite3_close(mDiaryTemp);
tempFlag = YES;
}
else
{
sqlite3_finalize(statement);
sqlite3_close(mDiaryTemp);
tempFlag = NO;
}
}
if(tempFlag)
{
return YES;
}
else
{
return NO;
}
}

以下条件总是失败:if (sqlite3_step(statement) == SQLITE_DONE)我之前发布过类似的问题,但是当我使用共享实例而不是新对象时,问题得到了解决。但在这里,即使在使用共享实例后我也无法插入。

最佳答案

在 iOS 上,您应该考虑使用 CoreData 而不是直接使用 SQLite。默认情况下,CoreData 保留在 SQLite 中,并且它有更友好的文档。此外,由于 CoreData 不是 C API,因此它将与 Objective-C 代码的其余部分更好地进行互操作。使用 CoreData 时还有很好的 Xcode 集成,这将让您轻松定义模式。在许多情况下,您还可以避免编写 SQL 查询。

两者之间的比较see this related question.

关于ios - 无法通过测试用例 iOS 将数据插入 sqlite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17183088/

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