현재 테이블에 표시된 DB의 데이터를 사용하여 UISearchBar의 검색 기능을 코딩하고 있습니다. 검색 결과를 찾아서 NSMutableArray *searchResults
에 저장합니다. 여기에 보이는 방법은 다음과 같습니다 NSMutableArray에서 NSString을 검색 할 때 NSMutableArray에서 객체의 인덱스를 어떻게 결정합니까?
- (void) searchGrapesTableView {
[searchResult removeAllObjects];
numSearchWines=0;
for (NSString *str in listOfWines)
{
NSRange titleResultsRange = [str rangeOfString:searchBar.text options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0) {
[searchResult addObject:str];
numSearchWines++;
}
}
}
listOfWines
listOfWines
에서 결정하고 다른 NSMutableArray에 추가하여 나중에 쉽게 액세스 할 수 있도록하고 싶습니다. 중복 된 항목이
listOfWines
(그리고 이후
searchResult
)에있는 경우
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"wineCell"];
//determine how many to add to get the grape ID
NSInteger grapeID=0;
for (int i=0; i<indexPath.section; i++) {
grapeID += [self.tableView numberOfRowsInSection:i];
}
Wines *currentWine;
if (isSearchOn) {
NSString *cellValue = [searchResult objectAtIndex:(grapeID+indexPath.row)];
NSInteger index = 0;
index = [listOfWines indexOfObject:cellValue];
currentWine = [allWines objectAtIndex:(index)];
}
else {
currentWine = [allWines objectAtIndex:(grapeID+indexPath.row)];
}
cell.textLabel.text = currentWine.name;
return cell;
}
불행하게도이 작동하지 않습니다 예를 들어, 나중에 내가이 검색 데이터를 사용하여 테이블 셀을 표시 할 때에, 나는 다음과 같은 코드가 있습니다. 그건 내가 이런 일을 할 수 있도록이, 또한 예를 들어,있는 NSMutableArray가 searchResultID
이름, 자신의 인덱스가 너무 유용 할 이유는 다음과 같습니다
NSInteger theResultID = [searchResultID objectAtIndex:(grapeID+indexPath.row)];
currentWine = [allWines objectAtIndex:theResultID];
지금'[searchResult addObject : str];'이 (가) for 루프 외부에 있습니다. 이것이 문제의 원인 일 수 있습니까? – CaldwellYSR
그건 오타입니다. 위의 내용을 수정하겠습니다. – lemontwist
생각해 보았습니다 ... 지금 obj-c의 초보자입니다. 그래서 내가 잘못 본 유일한 것입니다.) – CaldwellYSR