gpt4 book ai didi

xcode - UISearch栏始终显示:无结果

转载 作者:行者123 更新时间:2023-12-03 18:17:16 25 4
gpt4 key购买 nike

在我的应用程序中,我成功显示了uitableview中来自sqlite数据库的数据,并插入了UISearchbardisplay controller以在另一个表中显示搜索结果,问题是当我键入要搜索的字符串时,它总是返回:no结果,即使该字符串存在于该表中!

我认为我的方法有问题
(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText但我不知道到底是什么问题以及如何处理!这是我的代码:

MasterViewControllerViewController.m:

#import "MasterViewControllerViewController.h"
#import"MasterViewControllerAppDelegate.h"

#import"SingleStudent.h"


- (void)viewDidLoad {

MasterViewControllerAppDelegate* appDelegate =(MasterViewControllerAppDelegate*)[[UIApplication sharedApplication]delegate];
maListe = [[NSMutableArray alloc] init];
tampon = [[NSMutableArray alloc] init];
[maListe addObjectsFromArray:appDelegate.aryDatabase];
[tampon addObjectsFromArray:maListe];
[super viewDidLoad];
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


{static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
MasterViewControllerAppDelegate* appDelegate =(MasterViewControllerAppDelegate*)[[UIApplication sharedApplication]delegate];
SingleStudent* sStudent =[appDelegate.aryDatabase objectAtIndex:indexPath.row];

cell.textLabel.text = [sStudent strName];
// Configure the cell.

return cell;
}

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{

tampon2 = [[NSMutableArray alloc] init];


[tampon2 addObjectsFromArray:tampon];
[maListe removeAllObjects];
if([searchText isEqualToString:@""])
{
[maListe removeAllObjects];
[maListe addObjectsFromArray:tampon]; // Restitution des données originales
return;
}


for (NSDictionary *dict in tampon2 ){
NSString *name = [NSString stringWithFormat:@"%@", dict];



NSRange range = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (range.location != NSNotFound)
{
if(range.location== 0) // premiere lettre
[maListe addObject:name];}
}}


MasterViewControllerAppDelegate.m

#import "MasterViewControllerAppDelegate.h"
#import "MasterViewControllerViewController.h"
#import "SingleStudent.h"

-(void)updateNames {

databaseName = @"students7.sqlite";
NSArray* documentsPath= NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDir =[documentsPath objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];}

-(void)checkAndCreateDatabase {

BOOL success;
NSFileManager* fileManager = [NSFileManager defaultManager];
success = [fileManager fileExistsAtPath:databasePath];
if (success) {
return;
}
NSString* databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseName];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];

}


-(void)readWordsFromDatabase{



db = [FMDatabase databaseWithPath:databasePath];
aryDatabase = [[NSMutableArray alloc] init];
[db setLogsErrors:TRUE];
[db setTraceExecution:TRUE];
if (![db open]) {
NSLog(@"failed to open database");
return;
}
else {
NSLog(@"Opened database successfully");
}
FMResultSet* rs = [db executeQuery:@"SELECT * FROM student"];
while ([rs next]) {
int aID = [rs intForColumn:@"id"];
int aPK = [rs intForColumn:@"pk"];
NSString* aName = [rs stringForColumn:@"name"];

SingleStudent* sStudent = [[SingleStudent alloc] initWithData:aPK :aID :aName];
[aryDatabase addObject:sStudent];
[sStudent release];

}
[db close];

}


singleStudent.m

-(id)initWithData:(int)pK :(int)aId :(NSString*)name`
{

self.intPK = pK;
self.intId = aId;
self.strName = name;
return self;}


我怎么解决这个问题 ?

最佳答案

我将代码更改为此,如果某天有需要,可以在这里进行更改:

- (void)viewDidLoad {

maListe = [[NSMutableArray alloc] init];
tampon = [[NSMutableArray alloc] init];
int i;
for (i=0 ; i <= 4; i++) {

MasterViewControllerAppDelegate* appDelegate=(MasterViewControllerAppDelegate*)[[UIApplication sharedApplication]delegate];
SingleStudent* sStudent=[appDelegate.aryDatabase objectAtIndex:i];

[maListe addObject:[sStudent strName]];



}
[tampon addObjectsFromArray:maListe];


[super viewDidLoad];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{


static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
//MasterViewControllerAppDelegate* appDelegate =(MasterViewControllerAppDelegate*)[[UIApplication sharedApplication]delegate];
//SingleStudent* sStudent =[appDelegate.aryDatabase objectAtIndex:indexPath.row];
//NSString *cellValue = [sStudent strName];
NSString *cellValue = [maListe objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;
// Configure the cell.
/*NSString *cellValue = [maListe objectAtIndex:indexPath.row];
cell.textLabel.text = cellValue;*/


return cell;}

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

{

tampon2 = [[NSMutableArray alloc] init];
[tampon2 addObjectsFromArray:tampon];
[maListe removeAllObjects];
if([searchText isEqualToString:@""])
{
[maListe removeAllObjects];
[maListe addObjectsFromArray:tampon]; // Restitution des données originales
return;
}


for(NSString *name in tampon2)
{


NSRange r = [name rangeOfString:searchText];
if(r.location != NSNotFound)
{
if(r.location== 0) // premiere lettre
[maListe addObject:name];
}
}
}

关于xcode - UISearch栏始终显示:无结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15820772/

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