Objective c 在UITableView中搜索-NSInvalidArgumentException错误

Objective c 在UITableView中搜索-NSInvalidArgumentException错误,objective-c,ios,xcode,uitableview,Objective C,Ios,Xcode,Uitableview,我正在UITableView(tblFriends)中使用“搜索栏和搜索显示控制器”实现搜索栏 这是我的字典列表filteredFriendsList(相当于friendsList NSarray): } 我在UIViewController中有表视图(而不是在tableViewController中),因为表只占用了半个视图 代码如下: 接口: #import <UIKit/UIKit.h> #import "ClasseSingleton.h" #import "FBConnec

我正在UITableView(tblFriends)中使用“搜索栏和搜索显示控制器”实现搜索栏

这是我的字典列表filteredFriendsList(相当于friendsList NSarray):

}

我在UIViewController中有表视图(而不是在tableViewController中),因为表只占用了半个视图

代码如下: 接口:

#import <UIKit/UIKit.h>
#import "ClasseSingleton.h"
#import "FBConnect.h"

@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{

    NSArray *friendsList;
    NSDictionary *friendsDict;

    NSMutableArray *filteredFriendsList;

    IBOutlet UITableView *tblFriends;

}

@property (nonatomic, retain) NSArray *friendsList;
@property (nonatomic, retain) NSMutableArray *filteredFriendsList;

-(void)getFriends;


@end
每次我在搜索栏中输入字符时,应用程序都会因以下错误而崩溃:

“NSInvalidArgumentException”,原因:“-[\u NSCFDictionary比较:选项:范围:]:发送到实例的选择器无法识别

我希望解决这个问题,这是第6天的错误


谢谢。

您声明
filteredFriendsList
NSMutableArray
,但您在此处为其分配了一个不可变的
NSArray

filteredFriendsList = [NSArray arrayWithArray:[ClasseSingleton getFriends]];
将其更改为:

filteredFriendsList = [NSMutableArray arrayWithArray:[ClasseSingleton getFriends]];

您将
filteredFriendsList
声明为
NSMutableArray
,但在此处为其分配了一个不可变的
NSArray

filteredFriendsList = [NSArray arrayWithArray:[ClasseSingleton getFriends]];
将其更改为:

filteredFriendsList = [NSMutableArray arrayWithArray:[ClasseSingleton getFriends]];

或者
[[ClasseSingleton getFriends]mutableCopy]
:(现在出现了一个新错误:“NSInvalidArgumentException”,原因:”-[\uu NSCFDictionary compare:options:range::]:这是整个错误:由于未捕获的异常“NSInvalidArgumentException”终止应用程序,原因:'-[\uu NSCFDictionary compare:options:range:]:无法识别的选择器发送到实例0x6c84630'@yuji问题在这里,在filterContentForSearchText方法中:NSString*cellTitle;for(friendsList中的cellTitle){//for([friendsDict objectForKey:@“name]”中的cellTitle){NSComparisonResult=[cellTitle比较:搜索文本选项:NSCaseInsensitiveSearch范围:nsMakerRange(0,[searchText length]);if(result==sensorderedName){[filteredFriendsList addObject:cellTitle];}
friendsList=[NSArray arrayWithArray:[ClasseSingleton getFriends]];
这没有意义:
getFriends
不返回
NSArray
。其返回类型为
void
。或
[[ClasseSingleton getFriends]mutableCopy]
:(现在出现了一个新错误:“NSInvalidArgumentException”,原因:“-[\uu NSCFDictionary compare:options:range:::这是整个错误:由于未捕获的异常“NSInvalidArgumentException”终止应用程序,原因:”-[\uu NSCFDictionary compare:options:range:]:无法识别的选择器发送到实例0x6c84630'@yuji问题在这里,在filterContentForSearchText方法中:NSString*cellTitle;for(friendsList中的cellTitle){//for([friendsDict objectForKey:@“name]”中的cellTitle){NSComparisonResult=[cellTitle比较:搜索文本选项:NSCaseInsensitiveSearch范围:nsMakerRange(0,[searchText length]);if(result==sensorderedName){[filteredFriendsList addObject:cellTitle];}
friendsList=[NSArray Array WithArray:[ClasseSingleton getFriends]];
这没有意义:
getFriends
不返回
NSArray
。其返回类型为
void