Objective c 在UITableView中搜索-NSInvalidArgumentException错误
我正在UITableView(tblFriends)中使用“搜索栏和搜索显示控制器”实现搜索栏 这是我的字典列表filteredFriendsList(相当于friendsList NSarray): } 我在UIViewController中有表视图(而不是在tableViewController中),因为表只占用了半个视图 代码如下: 接口: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
#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
。