我正在尝试在基于CoreData的iPhone应用程序中实现搜索代码.我不知道该怎么办.该应用程序已经有一个带有谓词的NSFetchedResultsController,用于检索主TableView的数据.在改变太多代码之前,我想确保自己走在正确的道路上.我很困惑,因为很多例子都是基于数组而不是CoreData.
以下是一些问题:
我是否需要第二个NSFetchedResultsController只检索匹配的项目,或者我可以使用与主TableView相同的项目吗?
如果我使用相同的,它是否像清除FRC缓存然后更改handleSearchForTerm:searchString方法中的谓词一样简单?谓词是否必须包含初始谓词以及搜索词,还是记得它首先使用谓词来检索数据?
我如何回到原始结果?我只是将搜索谓词设置为nil吗?难道不会杀掉用于首先检索FRC结果的原始谓词吗?
如果有人使用FRC搜索任何代码示例,我将不胜感激!
iphone search core-data uisearchbar uisearchdisplaycontroller
我试图复制核心数据中现有的NSManagedObject和相关的子对象.我似乎找不到一个简单的方法来做到这一点.
我有一个从Core Data数据库填充的NSArrayController.我想在selectionIndex处获取对象并进行深层复制,使其与同一父对象相关并复制所有子对象.
任何帮助表示赞赏!
感谢TechZen的链接.我使用了该站点的示例代码并使用了此调用代码:
RuleSetVersion *object = [[ruleSetVersionArrayController selectedObjects] lastObject];
NSString *parentEntity = @"RuleSet";
RuleSetVersion *newObject = (RuleSetVersion*)[self copyObject:object toContext:[self managedObjectContext] parent:parentEntity];
[newObject setRuleSetEffectiveDate:[[NSDate alloc] init]];
[newObject setRuleSetVersionLastModifiedDate:[[NSDate alloc] init]];
[newObject setRuleSet:object.ruleSet];
NSError *error;
if ([managedObjectContext save:&error] == NO) {
[NSApp presentError:error];
}
Run Code Online (Sandbox Code Playgroud) 我有一个UIView的子类,它实现了绘制CoreText的代码.在应用程序中,UIView是在UIScrollView中绘制的.这是我目前在drawRect中使用的代码:渲染NSAttributedString:
CGContextRef context = UIGraphicsGetCurrentContext();
float viewHeight = self.bounds.size.height;
CGContextTranslateCTM(context, 0, viewHeight);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0, 1.0));
CGMutablePathRef path = CGPathCreateMutable();
CGRect bounds = CGRectMake(PADDING_LEFT, -PADDING_TOP, self.bounds.size.width-20.0, self.bounds.size.height);
CGPathAddRect(path, NULL, bounds);
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((CFMutableAttributedStringRef)attrString);
CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
CFRelease(framesetter);
CFRelease(path);
CTFrameDraw(frame, context);
Run Code Online (Sandbox Code Playgroud)
在我的NSAttributedString中,我有一些文本属性来为文本着色.
我需要帮助的是概念上,应该如何实现?我对所有绘制框架,图层等的各种方法感到困惑.我试图查看几本书和其他资源,但我觉得我缺少一些基本的东西.
这是我的要求:
我非常感谢任何帮助.
这是我到目前为止所尝试的:
我添加了一个新的UIView作为UIScrollView的子视图以包含亮点.然后我为突出显示添加单独的UIViews.当我创建虚拟"测试"高亮显示时,它们在CoreText视图下正确显示.我也可以轻松改变高光颜色.但是,当我从CoreText视图获取有关线条的实际信息以创建真实高光时,它返回零线.这可能是因为drawRect还没有完成绘图还是其他什么?
以下是一些问题:
我见过这个开源项目:
https://github.com/Cocoanetics/NSAttributedString-Additions-for-HTML
这是它能做的惊人,但比我需要的要复杂得多.代码使用CoreText呈现每个单独的字形,并允许突出显示,这很棒.但是,我试图保持我的代码简单和轻量级.我对CoreGraphics,CoreAnimation或CoreText知之甚少.
我也看到过这个问题:
该问题的答案提供了确定给定行中给定范围的Rect的边界的调用.我想我可以搞清楚这些电话.
UPDATE
这就是我现在所做的.我确定这是错的,但这是我能找到的唯一方法让它发挥作用......
我希望能够抓住应用程序的主要UIView.到目前为止,我一直在调用[[[self.view superview] superview] superview]来遍历链(或者向下,取决于你如何看待它).这个问题是我可能无法完全确定我需要达到的级别数.有办法:
或者,如果没有,
iphone ×3
core-data ×2
copy ×1
core-text ×1
ios ×1
search ×1
superview ×1
uiscrollview ×1
uisearchbar ×1
uiview ×1