1

TableView に SearchBar を実装しています。しかし、SearchBar にテキストを入力しようとするとエラーが表示されます。

これは私の NSObject クラス コード .h ファイルです。

#import <Foundation/Foundation.h>

@interface ChannelList : NSObject
{

    NSString *channelLink;
    NSString *channelName;
    NSString *channelType;
    NSString *channelLogo;
}

@property (nonatomic, copy) NSString *channelName;
@property (nonatomic, copy) NSString *channelType;
@property (nonatomic, copy) NSString *channelLogo;

@property (nonatomic, copy) NSString *channelLink;

+ (id)channelLink:(NSString*)channelLink channelName:(NSString*)achannelName channelType:(NSString*)achannelType channelLogo:(NSString*)achannelLogo;

@end

そして.mファイル:

#import "ChannelList.h"

@implementation ChannelList

@synthesize channelLogo,channelName,channelType,channelLink;

+ (id)channelLink:(NSString*)channelLink channelName:(NSString*)achannelName channelType:(NSString*)achannelType channelLogo:(NSString*)achannelLogo{

    ChannelList *ChannelList = [[self alloc] init];

    [ChannelList setChannelLink:channelLink];
    [ChannelList setChannelName:achannelName];
    [ChannelList setChannelType:achannelType];
    [ChannelList setChannelLogo:achannelLogo];

    return ChannelList;
}
@end

この配列を使用してテーブル ビューにデータを入力する

channelAllData = [NSArray arrayWithObjects:
                      [ChannelList channelLink:@"http://cdn.m.yuppcdn.net/liveorigin/smil:ndtvhindi_iphone.smil/playlist.m3u8" channelName:@"NDTV" channelType:@"NEWS" channelLogo:@"ndtv.png"],[ChannelList channelLink:@"http://cdn.m.yuppcdn.net/liveorigin/smil:aajtak_iphone.smil/playlist.m3u8" channelName:@"Aaj_Tak" channelType:@"NEWS" channelLogo:@"Aaj_Tak"],[ChannelList channelLink:@"http://cdn.m.yupptv.tv/liveorigin/smil:indiatv.smil/playlist.m3u8" channelName:@"India_tv" channelType:@"NEWS" channelLogo:@"India_tv_logo.gif"],[ChannelList channelLink:@"http://cdn.m.yuppcdn.net/liveorigin/smil:headlinetoday_iphone.smil/playlist.m3u8" channelName:@"HeadlinesToday" channelType:@"NEWS" channelLogo:@"HeadlinesToday.png"],nil];


    searchedData = [NSMutableArray arrayWithCapacity:[channelAllData count]];

ここでsearchedDataは私のSearchBarの検索結果です。

そして、ここで私は自分のsearchedDataにデータを入力していますが、タイトルで述べたようにエラーが発生しています。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    // remove all data that belongs to previous search
    [searchedData removeAllObjects];
    if([searchText isEqualToString:@""]||searchText==nil){
        [self.tableView reloadData];
        return;
    }
    [self filterContentForSearchText:searchText];

   // NSLog(@"%i",searchedData.count);
    [self.tableView reloadData];

}

- (void)filterContentForSearchText:(NSString*)asearchText
{
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c] %@",asearchText];
    NSLog(@"predicate %@",predicate);
    NSArray *tempArray = [channelAllData filteredArrayUsingPredicate:predicate];
    searchedData = [NSMutableArray arrayWithArray:tempArray];
}
4

1 に答える 1

3

述語では、使用していますが、クラスで宣言されたプロパティはself.nameありません。代わりにnameということですか?self.channelName

于 2013-03-16T13:09:15.223 に答える