如何在iphonedev中循环我的搜索?
我的目标是在我的表格顶部的搜索栏中搜索字典中的曲目。此表是通过将解析的数据放入NSDictionary中构建的。我的桌子字典看起来像如何在iphonedev中循环我的搜索?,iphone,objective-c,cocoa-touch,xcode,search,Iphone,Objective C,Cocoa Touch,Xcode,Search,我的目标是在我的表格顶部的搜索栏中搜索字典中的曲目。此表是通过将解析的数据放入NSDictionary中构建的。我的桌子字典看起来像 tracksDict: { "Cold Calling" = ( "<Track: 0x5f39bc0>", "<Track: 0x5f3a3e0>", "<Track: 0x5f3a990>", "<Track: 0x5f3ae80>
tracksDict: {
"Cold Calling" = (
"<Track: 0x5f39bc0>",
"<Track: 0x5f3a3e0>",
"<Track: 0x5f3a990>",
"<Track: 0x5f3ae80>"
);
"Gate Keeper" = (
"<Track: 0x5f3b3e0>",
"<Track: 0x5f3b980>",
"<Track: 0x5f3bed0>"
);
"Hot Calling" = (
"<Track: 0x5f3c390>"
);
}
我知道了如何使用NSPredicate搜索Track.Track\u title。但如果我删除了当前的搜索(更改搜索文本),它就会崩溃
,如果我搜索“pro”。新的CopyListoItems数组是正确的。我的数组中有两个项目。但如果我在pro中删除“o”或按“搜索”,它就会崩溃。我需要某种循环来解决这个问题。谢谢你 首先,不清楚您到底在寻找什么,所以请仔细思考您的问题,并尝试更清楚地重新表述 其次,不清楚你的搜索机制应该如何工作。copyListOfItems是一个实例变量(在此上下文中是“self”的属性)吗?列表项目怎么样?如何管理这些属性的内存?您是否正确标记要更新的UI 第三,看起来您缺少一些基本的内存管理概念。您分配/初始化一个可变数组并将其分配给searchArray,然后将searchArray指向另一个名为ListoItems的对象,从而泄漏您在前一行中刚刚分配/初始化的可变数组 第四,您还没有列出崩溃的具体情况(如特定信号和任何调试信息)。没有这些信息,很难说
若要我猜的话,我会说你们发布列表项太多了,因为你们把searchArray指向它,然后通过[searchArray release]发布它。当用户界面试图读取它以更新表时,它已经不存在了。NSMutableArray*searchArray=[[NSMutableArray alloc]initWithArray:ListoItems];谢谢约书亚,你帮我实现了以上的目标。
- (void) searchTableView {
NSString *searchText = searchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
searchArray = listOfItems;
NSLog(@"Sorted: %@", searchArray);
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"track_title contains %@", searchText];
[searchArray filterUsingPredicate:predicate];
[copyListOfItems addObjectsFromArray:searchArray];
[searchArray release];
searchArray = nil;
}