- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 UIManagedDocument 来获取核心数据。我的 ManagedObjectContext 中有日历对象,其 calendarSelected
属性。 Calendar 实体与 CalendarEntry 具有一对多关系。
当我改变他们的calendarSelected
时属性,然后执行 NSFetchRequest 以获取具有以下谓词的 CalendarEntry 对象:
[NSPredicate predicateWithFormat:@"calendar.calendarSelected = YES"]
calendar.calendarSelected 似乎没有看到我在没有调用的情况下所做的更改
[myManagedDocument saveToURL:myManagedDocument.fileURL forSaveOperation:UIDocumentSaveForOverwriting completionHandler:^(BOOL success) {}];
更新:
当日历事件关系出现故障时,似乎会发生这种情况:calendarEvents = "<relationship fault: 0x91aec90 'calendarEvents'>";
但当关系没有过错时有效。
最佳答案
如果问题仅发生在一对多关系指向的新插入的 CalendarEntry 对象上,则它们可能还没有永久对象 ID。只需转储对象 ID 并检查它是临时的还是永久的,就可以轻松调试。
当保留一对多关系中的包含对象时,我见过这种情况发生;似乎只要保留它,关系中包含的多对多对象就永远不会达到获得永久 ID 的程度。通过将应用程序置于后台并重新启动,调试起来比较容易;后台通常会强制 UIManagedDocument 保存,此后事情将开始按您的预期工作,因为 CalendarEntry 实体将被分配永久 ID,因此将变得可获取。
就保存 UIManagedDocument 而言,您无法控制使用 UIManagedDocument 时何时发生。最好的办法是通过 updateChangeCount:UIDocumentChangeDone 安排将来进行保存,但同样,它会“很快”发生,但不是确定性的,即,不可能知道它何时会发生。
要解决临时对象 ID 与永久对象 ID 问题,如果您遇到这种情况,请在 NSManagedObjectContext 上尝试以下类别;在完成插入新的 CalendarEntry 对象后调用它,以强制解决该问题。
// Obtain permanent ids for any objects that have been inserted into
// this context.
//
// As of this writing (iOS 5.1), we need to manually obtain permanent
// ids for any inserted objects prior to a save being performed, or any
// objects that are currently retained, that have relationships to the
// inserted objects, won't be updated with permanent ids for the related
// objects when a save is performed unless the retained object is refetched.
// For many objects, that will never occur, so we need to force the issue.
- (BOOL)obtainPermanentIDsForInsertedObjects:(NSError **)error
{
NSSet * inserts = [self insertedObjects];
if ([inserts count] == 0) return YES;
return [self obtainPermanentIDsForObjects:[inserts allObjects]
error:error];
}
关于ios - NSFetchRequest 没有看到 NSManagedObjectContext 中关系的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114951/
我想使用 iOS10 中引入的新核心数据 API。 @available(iOS 10.0, *) open class func fetchRequest() -> NSFetchRequest 我
使用此函数对表格 View 中的单元格进行排序。我的获取请求中出现错误。 do 循环内的行 notes = try context.fetch(request) 导致错误,请求带有下划线 错误显示“无
我的核心数据模型中有一个名为 Task 的实体。 Task 实体有一个名为 date 的可转换属性。 date 属性的类是一个名为 TDate 的类(它符合 NSCoding,因此是一个可转换的属性)
使用 NSFetchedResultsController 和 NSFetchRequest 可以设置返回每个属性中最高值的查询。 例如: Entity_001 A=F B=27 C=57 Entit
我有两个实体:Patient 和 Job。患者与作业具有一对多关系,称为“作业”,而作业与患者具有一对一关系,称为“患者”。作业具有名为“dueDate”(日期)和“已完成”(BOOL)的属性,而患者
如果不提供 NSSortDescriptor,我们就无法使用 NSFetchRequest。我想要做的就是获取结果并按创建顺序显示它们。有没有内置的方法可以做到这一点?或者我必须创建一个新的“自动增量
我必须为我的 iPhone 应用程序创建一个 NSFetchRequest,它返回与以下 SQL 语句相同的结果: SELECT week , year , SUM(durat
我在 MacOsX 10.6 上使用 SQL 存储时遇到了 CoreData 的奇怪问题。我有一个NSManagedObject子类名为 Family具有属性 name和关系personList连接到
我的数据模型如下:类别 —>名字 —>items(“汽车”类型的项目数组) 我正在尝试获取部分作为名称,行应该是项目(这是一个 NSArray) 这是我的代码,我期望将行作为 Car 返回,但它仍然返
我有一个数据列表,其中父子层次结构最多为三个级别。例如 项目A(祖 parent ) 项目B1(父级) 项目C1(子级) 项目C2(子级) 项目C3(子级) 项目B2(父级) 项目C4(子级) ...
当从核心数据库获取数据并同时更新同一实体的数据时,fetchRequest 返回 nil let fetchRequest = NSFetchRequest(entityName: "Abc")
我有下面的方法,我通过 NSDate() 来获取今天的所有结果。我试图在午夜到午夜之前得到结果,但似乎不起作用。我注意到我的谓词输出如下: "date >= CAST(460249200.000000
我试图在 tableView 中显示项目,但我的 fetchResult 数组没有显示任何内容。我得到这个 NSLog: 2013-09-13 13:02:01.088 Prototype[67018
关于这个问题,我正在回答我自己的问题。在我看到尽可能多的其他答案之前,我不会接受它。 在过去的几天里,我一直在努力处理下面的代码 - (id)fetchUniqueEntity:(Class)enti
我有一个 Student 实体,它有一个 dateOfBirth 属性。 我想从 Student 实体中获取所有 Students,按出生日期的升序排列,但按月份的降序排列。 例如:属于同一月份的学生
我是 CoreData 的新手,正在尝试编写一个通用函数来查询数据库中的信息。我遇到了一些问题。 我设置了一个名为 NSError *error 的私有(private)变量。我的代码如下所示: @i
我正在使用自定义源表达式 NSExpression(format: "FETCH(FUNCTION($manager, \"customFetchRequestForSourceEntityNamed
我有一个 NSFetchRequest(在 NSFetchedResultsController 中执行)用于以下数据: Person (one-to-many) Encounter Encounte
我的程序有一个带有两个相关表的 sqlite 数据库。一个称为“排名”,另一个称为“要求” 我想从“Requirement”表中获取与“Rank”表中的特定行有关系的所有行。以下是我的代码,它获取整个
我已经就与此相关的不同事情发布了类似的问题,但已经为此苦苦挣扎了大约一周,但无济于事。这一切都归结为这段代码: NSFetchRequest *oldFetchRequest = [[NSFetchR
我是一名优秀的程序员,十分优秀!