iOS:无法找到如何编写正确的方法
我已经管理了NSUserDefaults,并坚持编写根据standardUserDefaults中的设置过滤SQL选择的方法 我的应用程序显示了6个大洲,用户可以选择禁用其中的一些。在我的SQL方法中,我目前正试图以这种方式管理它:iOS:无法找到如何编写正确的方法,ios,cocoa-touch,sqlite,Ios,Cocoa Touch,Sqlite,我已经管理了NSUserDefaults,并坚持编写根据standardUserDefaults中的设置过滤SQL选择的方法 我的应用程序显示了6个大洲,用户可以选择禁用其中的一些。在我的SQL方法中,我目前正试图以这种方式管理它: if (![[NSUserDefaults standardUserDefaults] boolForKey:@"europe"]) { sqlContinents="SELECT cont.continentID,cont.continen
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"europe"])
{
sqlContinents="SELECT cont.continentID,cont.continentName,cont.continentImage\
FROM Continents as cont\
WHERE cont.continentID <> 1";
}
若用户只禁用欧洲,那个么它会起作用,但若他禁用更多的大陆呢。。。所以我不知道如何编写代码来检查哪些大陆被禁用并忽略它们
当然,有一个选项可以写很多像这样的如果
如果[[NSUserDefaults standardUserDefaults]boolforky:@europe]&&….&&….&….,但如果有人能告诉我如何以更智能、更优雅的方式实现这种方法,我将非常感激。提前感谢。您可以创建一个WHERE字符串,该字符串保存SQL语句之前的所有条件
NSString where = @"WHERE";
if (![[NSUserDefaults standardUserDefaults] boolForKey:@"europe"]){
where = [where stringByAppendingString: @" cont.continentID <> 1 "];
}
// Rest of continents...
sqlContinents = [@"SELECT cont.continentID,cont.continentName,cont.continentImage\
FROM Continents as cont " stringByAppendingString: where];
另一种方法:sqlite知道IN where子句,因此可以使用continet ID(如1、4、5)设置字符串,从而生成语句
sql = [NSString stringWithFormat:@"... WHERE cont.continetID NOT IN (%@)", string];
问题是sqlite查询不是NSString。在prepare语句中使用[sql UTF8String]。