对于我的UITableView,我使用数组作为数据源。到目前为止一切正常。但是,我有一个奇怪的问题,当我使用搜索字段并输入几个字符后,我再次删除,底层数组突然变空。这里是代码片段,这可能与理解我的问题有关:
我的.h
中的声明@interface dictionaryViewController : UIViewController <UITableViewDelegate>{
...
...
NSMutableArray *cardArray;
}
...
@property (retain) NSMutableArray *cardArray;
...
我的.m代码中的用法:
@synthesize cardArray;
...
- (void)viewDidLoad {
[super viewDidLoad];
self.cardArray = [[NSMutableArray alloc] initWithObjects:nil];
...
}
我使用SQL DB中的数据填充数组:
[self.cardArray addObject:[NSString stringWithFormat:@"%@ - %@", aQuestion, anAnswer]];
在代码中读取数组的内容,就像在cellForRow方法中一样:
- (UITableViewCell *)tableView:(UITableView *)aTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
...
thisCardIndex = [self.cardArray indexOfObject:cellValue];
...
}
最后我发布它,就像这样(我实际上在发布命令中遇到了一些其他问题,为什么我使用了removeObjects):
[self.cardArray removeAllObjects];
self.cardArray=nil;
在日志中我没有看到错误。但是,调试器显示代码与SIGABRT崩溃,并且在设置断点时,我看到原因是空cardArray。
感谢您的支持。
答案 0 :(得分:0)
- (void) searchTableView {
NSString *searchText = searchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] initWithObjects:nil];
for (NSDictionary *dictionary in self.listOfItems) {
NSArray *myArray = [dictionary objectForKey:@"Cards"];
[searchArray addObjectsFromArray:myArray];
// [myArray release]; }
// Counter is needed to get the index of the primary key to dislpay the card in editViewController
int aCounter=0;
for (NSString *sTemp in searchArray) {
NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0) {
[self.aCopyListOfItems addObject:sTemp];
NSInteger myPrimaryKey;
myPrimaryKey = [[self.cardIDArray objectAtIndex:aCounter] integerValue];
[self.aCopyOfCardIDArray addObject:[NSNumber numberWithUnsignedInteger: myPrimaryKey]];
}
}
[searchArray removeAllObjects];
searchArray = nil;
}