具有核心数据的 iPad splitview 应用程序

Posted

技术标签:

【中文标题】具有核心数据的 iPad splitview 应用程序【英文标题】:iPad splitview application with core data 【发布时间】:2014-09-04 20:13:58 【问题描述】:

我是应用程序开发的新手,我的拆分视图核心数据 iPad 应用程序存在很大问题。尽管我确保我已经很好地构建了所有核心数据结构,但是当我在视图之间传递对象并通过核心数据保存它们时我遇到了问题。基本上我的问题是这样的: 我有 peopleviewcontroller,我在其中列出了列表中的所有人员。我有 addpersonviewcontroller 在其中创建新人并将其保存到 coredata。然而,即使在新类中保存新对象在保存错误结构中似乎是成功的,但没有数据写入核心数据。我首次展示了代码并发现 created person 的 managedjectcontext 始终为空。因此,它不会写入核心数据。 我花了很多时间来解决问题,包括阅读 stackverflow 的日子,但没有解决方案。 非常感谢有关此问题的任何帮助。提前谢谢你。

【问题讨论】:

【参考方案1】:

Your Person 是 NSManagedObject 的子类。在您的 AddPersonViewController 中,您从未创建过对象。在保存之前,您必须将该实体插入核心数据。

我建议有一些存储/存储库来处理所有这些。

例如,我的代码中有这个:

- (NSManagedObject *)createManagedObject:(NSString *)entityName

    NSManagedObject *objectCreated = [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:self.managedObjectContext];

    [self saveContext];
    return objectCreated;

然后我用实体类型调用它,它返回一个 NSManagedObject。然后,您可以使用

将其转换为您的 Person 类

Person *addPerson = (Person *)managedObject;

现在您可以进行更改并保存。

NSManagedObject 必须由商店创建,然后才能保存。您不能只是更新它并期望它能够工作。

【讨论】:

你好贾斯汀,非常感谢你的回答。如果你注意到了,我已经在 PeopleViewController 中的 prepareForSegue 方法中创建了 addPerson 对象。你的意思是我应该重新创建它? 添加人员正在保存,在您的表格视图中显示他们时出错。 再次感谢您。我通过 sqllite 查看了数据。但是,似乎没有数据。 此外,如果您注意到,应用程序会收到以下错误:2014-09-05 03:04:20.550 MasterDetailStoryboard[4232:60b] CoreData: error: Serious application error。在调用 -controllerDidChangeContent: 期间,从 NSFetchedResultsController 的委托中捕获了异常。 -[UITableViewCell setPerson:]: 无法识别的选择器使用 userInfo (null) 发送到实例 0x8e67c80 你好贾斯汀。你是对的 !非常感谢我已经解决了这个问题。

以上是关于具有核心数据的 iPad splitview 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

将 iPhone 应用程序转换为 iPad,然后在 iPad 中使用 splitview?

将 iPhone 应用升级到通用,现在使用 splitview

如何在 iPad 上从左、右到上、下更改 SplitView?

iOS SplitView / 通用帮助需要 xcode 4.2

SplitView 就像 iPhone 上的 Facebook 应用程序

如何在splitview中改变按钮的位置 uwp