相关疑难解决方法(0)

带搜索的NSFetchedResultsController

过滤NSFetchedResultsController数据的最佳做法是什么?每次搜索栏的文本发生变化时,我是否需要重新初始化它?

我正在使用UISearchDisplayControllers和我正在实施:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString;
Run Code Online (Sandbox Code Playgroud)

谢谢.

core-data objective-c nsfetchedresultscontroller

17
推荐指数
2
解决办法
2万
查看次数

UISearchDisplayController - 为什么我的搜索结果视图包含空单元格?

我即将离开这里,在我的Core Data数据库中我有很多用户,我已经通过NSFetchedResultController将数据库连接到tableviewcontroller,当视图加载时,我看到所有用户,我可以通过storyboard segue执行推送到详细视图控制器...到目前为止,所以上帝,我的tableview包含一个带有图像视图的自定义单元格和2个uitextlabels,它们都分配了标签值.

现在,当我执行搜索时,我创建了一个带有谓词的新NSFetchedResultController,并执行performFetch ..然后我获取fetchedObjects属性并且它包含匹配的用户,因此搜索请求也像魅力一样...我的tableviews数据源我检查self.tableView == self.searchdispl.view以查看我应该从哪个控制器查询数据..在所有控制器委托中,我检查哪个控制器是活动的,所以我知道要重新加载哪个视图.如果我记录了很多数据,那么幕后操作就很好了,委托和数据源方法都使用了正确的视图和fetchcontroller.

在我的cellForRowAtIndexPath中,我可以注销我的user.name,这在搜索时也是正确的.

问题是顶部的UISearchDisplayController视图只有空单元格,除非我将UITableViewControllers动态原型单元格设置为basic,然后两个tableviews都包含带有用户名称的标签!来自单元格的segue仍然不起作用,但是单元格中有数据.

看起来UISearchDisplayControllers视图是一个通用视图,至少在segues和cell布局时...

我检查了从UISearchDisplayController到我的UITableViewController的所有连接,看起来都很好......

为什么SearchDisplayControllers视图不接受我的单元格布局和segue?

谢谢 :)

更新:刚刚弄清楚出了什么问题,但尚未找到解决方案.在我的cellForRowAtIndexPath中,当thr searchdisplayview在此方法中时,单元格始终配置为默认单元格.我是否真的需要在代码中创建我的单元格以使uisearchdisplay工作?为什么不能使用故事板中配置的单元格?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:   (NSIndexPath *)indexPath
{
 static NSString *CellIdentifier = @"PersonCell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    NSLog(@"Default Cell");
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

NSFetchedResultsController *controller = tableView == self.tableView ? self.fetchedResultsController : self.fetchedResultsControllerForSearch;

Person *p;
p = [controller objectAtIndexPath:indexPath];       

[(UILabel*) [cell viewWithTag:1] setText:p.name]; 
[(UILabel*) [cell viewWithTag:2] setText:@"Status"];    

if(p.avatarImage){
    UIImage *avatar = [[UIImage alloc] initWithData:p.avatarImage];
    [(UIImageView …
Run Code Online (Sandbox Code Playgroud)

iphone uisearchdisplaycontroller nsfetchedresultscontroller

6
推荐指数
1
解决办法
1688
查看次数

更新fetchedResultsController以获取UISearchBar设置的谓词

重构为香草 UIViewController

而不是具有UITableView活性和非活性之间切换UISearchController,我重构到香草UIViewControllerUISearchBar在顶部和一个UITableView直接在其下面.

我正在尝试做的是切换fetchedResultsController具有由searchBar中的文本设置的谓词和捕获所有内容的谓词.

我找到了这个答案,它描述了Objective-C中类似问题的解决方案,并作为我重构Swift项目的基础:

如何使用UISearchDisplayController/UISearchBar过滤NSFetchedResultsController(CoreData) /sf/answers/665902401/

我的问题:如何更新我的fetchedResultsController searchBar文本?

tableView填入正确的,但我无法弄清楚如何更新fetchedResultsController我的searchPredicate这是我已经试过.

下面是我怎样,我宣布我NSPredicateNSFetchedResultsController在类的顶部:

var searchPredicate = NSPredicate()

// Create fetchedResultsController to store search results
lazy var fetchedResultsController: NSFetchedResultsController = {
    let fetchRequest = NSFetchRequest(entityName: "Song")
    let sortDescriptor = NSSortDescriptor(key: "songDescription", ascending: true);
    // ** THESE TWO LINES CAUSE A CRASH, BUT NO COMPILER ERRORS **
    // let predicate = …
Run Code Online (Sandbox Code Playgroud)

core-data uitableview nspredicate nsfetchedresultscontroller swift

2
推荐指数
1
解决办法
5027
查看次数

范围栏按钮可用于过滤结果而无需激活UISearchBar的键盘吗?

我在加载时显示带有搜索栏和范围栏按钮的UITableView.当用户点击示波器条按钮时,将显示键盘并且搜索栏将获得焦点(成为第一响应者).

是否可以允许使用示波器条按钮来过滤表项而不显示键盘?用户可以通过在搜索文本输入字段中专门点击来显示键盘.

iphone objective-c uitableview uisearchbar ios

1
推荐指数
1
解决办法
4698
查看次数