Tag: objective c

对多对多关系进行NSPredicate不区分大小写的匹配

我正在实现一个search字段,用户可以input一个string来筛选视图中显示的项目。 每个显示的对象都有一个keywords一对多的关系,我希望能够根据关键字过滤对象。 每个关键字对象都有一个name属性,所以我设置了一个NSPredicate来执行过滤,如下所示: NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS %@", self.searchString]; 这是有效的,但问题是search是区分大小写的,所以如果关键字有一个大写字母,但用户input全部小写,则不会find匹配项。 我已经尝试了以下修改: NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS[c] %@", self.searchString]; 但是,在匹配的大小写敏感性方面没有任何区别。 有没有办法使用只是一个简单的谓词做这种不区分大小写的匹配? 或者我是否需要在关键字类上实现某种自定义访问器,例如,编写一个lowercaseName方法,并匹配searchstring的小写版本? 附录:在进一步的研究之后,添加自定义访问器的解决方法对于手动使用NSPredicate而言工作正常,但是在使用Core Data的NSFetchRequest时根本不起作用,只有在查询Core Data模型中定义的属性时才起作用。

以编程方式获取故事板ID?

尝试查看UIViewController或UIView是否可以识别它的Storyboard ID。 所以希望: UIViewController *aViewController; NSString *storyboardID = aViewController.storyboard.id; //not an actual property 要么: NSString *storyboardID = [aViewController.storyboard valueForKey:@"storyboardId"]; //also not a working call 但没有喜悦,也找不到类似的在线解决scheme。 有谁知道这是甚至可能吗?

在Objective-C中,给定一个id,我怎样才能知道它指向的是什么types的对象?

Objective-C新手问题。 鉴于以下(虚构)代码: id mysteryObject = [anotherObject mysteriousMethod]; 我怎样才能在运行时确定mysteryObject是什么类?

UITableView:从空白部分隐藏标题

我有一个UITableView,显示本月的费用(见截图): 我的问题是与空白部分的标题。 有什么方法可以隐藏它们吗? 数据从coredata加载。 这是生成标题标题的代码: TitleForHeader -(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ if ([tableView.dataSource tableView:tableView numberOfRowsInSection:section] == 0) { return nil; } else { NSDate *today = [NSDate date ]; int todayInt = [dataHandler getDayNumber:today].intValue; NSDate *date = [NSDate dateWithTimeIntervalSinceNow:(-(todayInt-section-1)*60*60*24)]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:[[NSLocale preferredLanguages] objectAtIndex:0]]]; [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; NSString […]

按单元分页UICollectionView,而不是屏幕

我有UICollectionView水平滚动,并且总是有2个单元并排整个屏幕。 我需要滚动停止在一个单元格的开始。 启用分页后,集合视图会一次滚动整个页面,即2个单元格,然后停止。 我需要启用单个单元格的滚动,或者停止在单元格边缘的多个单元格的滚动。 我试图UICollectionViewFlowLayout并实现方法targetContentOffsetForProposedContentOffset ,但到目前为止,我只能打破我的集合视图,并停止滚动。 有没有更简单的方法来实现这个和如何,或者我真的需要实现UICollectionViewFlowLayout子类的所有方法? 谢谢。

Objective-C in,out,inout,byref,byval,..等等。 他们是什么?

在阅读@encoding Objective-C手册时,我发现了一些不熟悉的东西。 Table 6-2 Objective-C method encodings Code Meaning r const n in N inout o out O bycopy R byref V oneway 我唯一知道的是oneway 。 其他人是什么?

UIImagePickerController中的前置摄像头

我正在使用UIImagePickerController在iPad2上开发前置摄像头应用程序。 当我捕捉图像时,显示为从左到右翻转。 我该如何纠正? if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { UIImagePickerController *imgPkr = [[UIImagePickerController alloc] init]; imgPkr.delegate = self; imgPkr.sourceType = UIImagePickerControllerSourceTypeCamera; imgPkr.cameraDevice=UIImagePickerControllerCameraDeviceFront; UIImageView *anImageView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"select%d.png",val]]]; anImageView.frame = CGRectMake(0, 0, anImageView.image.size.width, anImageView.image.size.height); imgPkr.cameraOverlayView = anImageView; [theApp.TabViewControllerObject presentModalViewController:imgPkr animated:YES]; [imgPkr release]; }

如何在Objective-C中编写lambda方法?

如何在Objective-C中编写lambda方法?

什么是sortingNSSet最有效的方法?

根据集合中对象的属性,在NSSet / NSMutableSetsorting对象的最有效方法是什么? 现在我正在做的方式是遍历每个对象,将它们添加到一个NSMutableArray ,并用NSSortDescriptorsorting该数组。

iOS中的和 init有什么区别?

可能重复: 在Objective-C中的alloc,init和new 我对[Class new]和[[Class alloc] init]有点困惑。 我已经使用[Class new]和[[Class alloc] init]定义了一个对象content 。 (1). NSMutableArray *content = [NSMutableArray new]; (2). NSMutableArray *content = [[NSMutableArray alloc] init]; 我的问题是关于[Class new]和[[Class alloc] init]之间的区别。 对我来说,(1)和(2)是相似的。 如果(1)和(2)是相似的,那么为什么我们大多数时候使用[[Class alloc] init] ,而[Class new]呢? 我认为一定有一些区别。 请解释两者的差异,优缺点?