Iphone NSMutableArray丢失数据
我已经为Iphone NSMutableArray丢失数据,iphone,ios,ios5,ios6,Iphone,Ios,Ios5,Ios6,我已经为NSMutableArray创建了一个属性,当为它赋值时,我已经编写了以下代码 [self setTotalCells:[[NSMutableArray alloc] initWithArray:[jsonDictionary valueForKey:@"data"]]]; 我在搜索栏方法中使用它。但是,一旦我使用了该属性,数组就会变为空 cells = [[NSMutableArray alloc]init]; NSLog(@"filterContentForSearchText")
NSMutableArray
创建了一个属性,当为它赋值时,我已经编写了以下代码
[self setTotalCells:[[NSMutableArray alloc] initWithArray:[jsonDictionary valueForKey:@"data"]]];
我在搜索栏方法中使用它。但是,一旦我使用了该属性,数组就会变为空
cells = [[NSMutableArray alloc]init];
NSLog(@"filterContentForSearchText");
NSLog(@"**************************************************************");
if ([totalCells count]<= 0) {
totalCells = [_jsonPropertiesDictionary valueForKey:@"data"];
}
NSLog(@"%@",totalCells);
NSLog(@"**************************************************************");
for (id cell in totalCells)
{
NSLog(@"bedrooms : %@",[cell valueForKey:@"BEDROOMS"]);
NSLog(@"DISPLAY_ADDRESS : %@",[cell valueForKey:@"DISPLAY_ADDRESS"]);
NSLog(@"PRICE : %@",[cell valueForKey:@"PRICE"]);
NSLog(@"searchText : %@",searchText);
NSComparisonResult result = NSOrderedAscending;
if ([[cell valueForKey:@"BEDROOMS"] isKindOfClass:[NSString class]] && [[cell valueForKey:@"BEDROOMS"] length] > 0) {
result = [[cell valueForKey:@"BEDROOMS"] compare:searchText options:(NSCaseInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame)
[self.filteredListContent addObject:cell];
}
if ([[cell valueForKey:@"DISPLAY_ADDRESS"] isKindOfClass:[NSString class]] && [cell valueForKey:@"DISPLAY_ADDRESS"] != nil && [cell valueForKey:@"DISPLAY_ADDRESS"] != @"" && [[cell valueForKey:@"DISPLAY_ADDRESS"] length] > 0) {
result = [[cell valueForKey:@"DISPLAY_ADDRESS"] compare:searchText options:(NSCaseInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame)
[self.filteredListContent addObject:cell];
}
if ([[cell valueForKey:@"PRICE"] isKindOfClass:[NSString class]] && [cell valueForKey:@"PRICE"] != nil && [[cell valueForKey:@"PRICE"] length] > 0) {
result = [[cell valueForKey:@"PRICE"] compare:searchText options:(NSCaseInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame)
[self.filteredListContent addObject:cell];
}
if ([searchText isEqualToString:@"" ]) {
filteredListContent = totalCells;
break;
}
}
if (self.filteredListContent.count > 0) {
cells = self.filteredListContent;//added by prajakta
}
[self.propertyList_table reloadData];
NSLog(@"filteredListContent : %@ ",filteredListContent);
任何帮助都将不胜感激您为什么不使用这种方式进行筛选?它不会破坏您原始的数据源
cells = [[NSMutableArray alloc]init];
NSLog(@"filterContentForSearchText");
NSLog(@"**************************************************************");
if ([totalCells count]<= 0) {
totalCells = [_jsonPropertiesDictionary valueForKey:@"data"];
}
NSLog(@"%@",totalCells);
NSLog(@"**************************************************************");
/*
* replace your code FROM here...
*/
NSArray *filteredCells = [totalCells filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
NSDictionary *cell = (NSDictionary *)evaluatedObject;
if ([[cell valueForKey:@"BEDROOMS"] isKindOfClass:[NSString class]] && [[cell valueForKey:@"BEDROOMS"] length] > 0) {
return [[cell valueForKey:@"BEDROOMS"] compare:searchText options:(NSCaseInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
}
if ([[cell valueForKey:@"DISPLAY_ADDRESS"] isKindOfClass:[NSString class]] && [cell valueForKey:@"DISPLAY_ADDRESS"] != nil && [cell valueForKey:@"DISPLAY_ADDRESS"] != @"" && [[cell valueForKey:@"DISPLAY_ADDRESS"] length] > 0) {
return [[cell valueForKey:@"DISPLAY_ADDRESS"] compare:searchText options:(NSCaseInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
}
if ([[cell valueForKey:@"PRICE"] isKindOfClass:[NSString class]] && [cell valueForKey:@"PRICE"] != nil && [[cell valueForKey:@"PRICE"] length] > 0) {
return [[cell valueForKey:@"PRICE"] compare:searchText options:(NSCaseInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
}
return FALSE;
}]];
/*
* TO here...
*/
if (self.filteredListContent.count > 0) {
cells = self.filteredListContent;//added by prajakta
}
[self.propertyList_table reloadData];
NSLog(@"filteredListContent : %@ ",filteredListContent);
cells=[[NSMutableArray alloc]init];
NSLog(@“filterContentForSearchText”);
NSLog(@*****************************************************************************************************************”);
如果([totalCells count]0){
return[[cell valueForKey:@“beddrooms”]比较:searchText选项:(NSCaseInsensitiveSearch)范围:NSMakeRange(0,[searchText长度]);
}
如果([[cell valueForKey:@“DISPLAY_ADDRESS”]是类:[NSString类]]和(&[cell valueForKey:@“DISPLAY_ADDRESS”]!=nil&&[cell valueForKey:@“DISPLAY_ADDRESS”!=@“&[cell valueForKey:@“DISPLAY_ADDRESS”]长度]>0){
返回[[cell valueForKey:@“DISPLAY_ADDRESS”]比较:searchText选项:(NSCaseInsensitiveSearch)范围:NSMakeRange(0,[searchText length]);
}
如果([[cell valueForKey:@“PRICE”]是类的种类:[NSString类]]&&[cell valueForKey:@“PRICE”!=nil&[[cell valueForKey:@“PRICE”]长度]>0){
返回[[cell valueForKey:@“PRICE”]比较:搜索文本选项:(NSCaseInsensitiveSearch)范围:NSMakeRange(0,[searchText length]);
}
返回FALSE;
}]];
/*
*到这里。。。
*/
如果(self.filteredListContent.count>0){
cells=self.filteredListContent;//由prajakta添加
}
[self.propertyList_table reloadData];
NSLog(@“filteredListContent:%@”,filteredListContent);
…您的问题是什么?问题是在一次迭代后,我在TotalCells中没有得到任何值。您的搜索方法非常有趣,为什么不尝试使用-filteredArrayUsingPredicate:
方法过滤NSArray
?它根本不会弄乱原始数据源。此外,您的代码片段并没有给我们提供太多的信息。它在哪里运行?我的搜索方法只有那个代码。你想知道什么?因此,我将相应地编辑我的问题。我建议您在访问值Hanks Holex时使用self.totalCells。我一定会试试这个。我不太确定您是如何以及在哪里丢失原始NSArray
的内容的,您提供的代码片段似乎并不重要,但如果您真的丢失了数据,它可能会有一些。。。
cells = [[NSMutableArray alloc]init];
NSLog(@"filterContentForSearchText");
NSLog(@"**************************************************************");
if ([totalCells count]<= 0) {
totalCells = [_jsonPropertiesDictionary valueForKey:@"data"];
}
NSLog(@"%@",totalCells);
NSLog(@"**************************************************************");
/*
* replace your code FROM here...
*/
NSArray *filteredCells = [totalCells filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(id evaluatedObject, NSDictionary *bindings) {
NSDictionary *cell = (NSDictionary *)evaluatedObject;
if ([[cell valueForKey:@"BEDROOMS"] isKindOfClass:[NSString class]] && [[cell valueForKey:@"BEDROOMS"] length] > 0) {
return [[cell valueForKey:@"BEDROOMS"] compare:searchText options:(NSCaseInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
}
if ([[cell valueForKey:@"DISPLAY_ADDRESS"] isKindOfClass:[NSString class]] && [cell valueForKey:@"DISPLAY_ADDRESS"] != nil && [cell valueForKey:@"DISPLAY_ADDRESS"] != @"" && [[cell valueForKey:@"DISPLAY_ADDRESS"] length] > 0) {
return [[cell valueForKey:@"DISPLAY_ADDRESS"] compare:searchText options:(NSCaseInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
}
if ([[cell valueForKey:@"PRICE"] isKindOfClass:[NSString class]] && [cell valueForKey:@"PRICE"] != nil && [[cell valueForKey:@"PRICE"] length] > 0) {
return [[cell valueForKey:@"PRICE"] compare:searchText options:(NSCaseInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
}
return FALSE;
}]];
/*
* TO here...
*/
if (self.filteredListContent.count > 0) {
cells = self.filteredListContent;//added by prajakta
}
[self.propertyList_table reloadData];
NSLog(@"filteredListContent : %@ ",filteredListContent);