Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iphonedev中循环我的搜索?_Iphone_Objective C_Cocoa Touch_Xcode_Search - Fatal编程技术网

如何在iphonedev中循环我的搜索?

如何在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>

我的目标是在我的表格顶部的搜索栏中搜索字典中的曲目。此表是通过将解析的数据放入NSDictionary中构建的。我的桌子字典看起来像

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;
}