【发布时间】:2010-08-23 14:56:30
【问题描述】:
我正在尝试查找可变数组中是否有任何对象与我传递的对象匹配。请看下面的函数。
name 来自 table view controller,因此被点击的行被保存到 name 并传递给这个函数。我正在尝试检查表视图控制器中的名称是否等于来自数据库的名称。这里的名字指的是名字和姓氏。这就是我附加这些字符串的原因。
请帮助我..我对如何做到这一点感到困惑..如果你有更好的方法请告诉我..非常感谢..我认为它试图比较对象的内存位置(不确定虽然)但是有什么方法可以准确比较我传递的名称..
-(NSMutableDictionary *)getSearchContacts:(NSString *)name
{
//---retrieve rows---
NSString *qsql =[[NSString stringWithFormat:@"SELECT * FROM CONTACTS WHERE last_name LIKE '%@",[name substringToIndex:1]]stringByAppendingString:@"%' GROUP BY sugar_id ORDER BY last_name"];
NSString *sugar_id;
NSString *first_name;
NSString *last_name;
NSMutableArray *searchContacts=[[NSMutableArray alloc] init];
sqlite3_stmt *statement;
if (searchContactName == nil) {
searchContactName=[[NSString alloc]init];
}
if (sqlite3_prepare_v2( db, [qsql UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
sugar_id= [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 1)];
first_name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 3)];
last_name = [NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 4)];
if ([first_name isEqualToString:@"(null)"]) {
last_name=[last_name stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[last_name substringToIndex:1] uppercaseString]];
searchContactName=[searchContactName stringByAppendingString:last_name];
searchContactName=[searchContactName stringByAppendingString:@":"];
searchContactName=[searchContactName stringByAppendingString:@","];
}
else {
first_name=[first_name stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[first_name substringToIndex:1] uppercaseString]];
last_name=[last_name stringByReplacingCharactersInRange:NSMakeRange(0,1) withString:[[last_name substringToIndex:1] uppercaseString]];
searchContactName=[searchContactName stringByAppendingString:last_name];
searchContactName=[searchContactName stringByAppendingString:@":"];
searchContactName=[searchContactName stringByAppendingString:first_name];
searchContactName=[searchContactName stringByAppendingString:@","];
}
[searchContacts addObject:searchContactName];
//first_name = nil;
//last_name = nil;
if ([searchContacts containsObject:name]==YES) {
searchSugarId=[[NSMutableDictionary alloc]initWithObjectsAndKeys:sugar_id,searchContactName,nil];
}
}
//---deletes the compiled statement from memory---
sqlite3_finalize(statement);
}
return searchSugarId;
}
编辑
姓名:布莱克蒙:瓦伦丁
搜索联系人姓名 Barefield:Collin,Baylis:Efren,Beatty:Peter,Beckwith:Lynn,Benny:Wilma,Bermudes:Lenore,Berryhill:Gerard,Biles:Jodi,Blackmon:Valentin,Blassingame:Rose,Blume:Renae,Bonet:Claude,Bostic: Valerie,Bouldin:雷纳尔多,Bracewell:Brendan,Bradford:Kris,Brathwaite:Bill,Brugger:Ismael,Brumit:Julie,Buchholtz:Mathew,Bunker:Chrystal,Burch:Floyd,Burman:Sang,Butcher:Prince,Butcher:Rory,
搜索联系人 Barefield:Collin,Baylis:Efren,Beatty:Peter,Beckwith:Lynn,Benny:Wilma,Bermudes:Lenore,Berryhill:Gerard,Biles:Jodi,Blackmon:Valentin,Blassingame:Rose,Blume:Renae,Bonet:Claude,Bostic: Valerie,Bouldin:雷纳尔多,Bracewell:Brendan,Bradford:Kris,Brathwaite:Bill,Brugger:Ismael,Brumit:Julie,Buchholtz:Mathew,Bunker:Chrystal,Burch:Floyd,Burman:Sang,Butcher:Prince,Butcher:Rory,
【问题讨论】:
-
您是否尝试过记录
searchContactName、name和searchContacts来检查前面的代码? -
感谢您的回复..当我尝试在控制台上打印内容时..我得到的名称是正确的..请检查值..我编辑了上面的代码
标签: iphone objective-c nsmutablearray nsarray