我想知道我是否可以在核心数据中存储User
对象的方式构建我的应用程序结构,而不必从视图控制器的角度了解NSManagedObjectContext。
我想这样做就像他们在一些框架中那样做,例如Parse。您可以使用[object save]或[object pin]等简单方法在本地保存对象。
我知道对于一些更复杂的对象,我肯定希望控制视图控制器内的NSManagedObjectContext。但是如果ob只是将[User createCurrentUserInContext:self.context]
保存为currentUser并稍后检索,我真的想以某种方式将NSManagedObjectContext封装在对象本身内。
所以代替方法
[User currentUserInContext:self.context]
或
[User createCurrentUser]
我只想打电话给
[User currentUser]
或
{{1}}
你能给我一些建议。我期待着尽可能多地听到您的解决方案。
感谢您的帮助
答案 0 :(得分:1)
我认为你想要一个与Apple设计Core Data的方式不同的框架。该框架旨在成为一个对象图(而不是一个"数据库")。上下文用作"便笺簿"独立于任何存储细节进行更改。
视图控制器可以访问它们显示的对象,读取它们的属性并更改响应用户交互。上下文是管理多线程,撤消管理器和其他强大功能的便捷结构。
您描述的范例更像是ActiveRecord。这实际上是一个偏好的问题,因为这两种方法都有优点和缺点。 (我不想扩展那些,因为这主要是基于意见的,不适合StackOverflow格式。)
如果您需要user.save()
之类的内容,请查看MagicalRecord。这是一个非常流行的框架,试图将ActiveRecord成语带入Core Data。我不是粉丝,虽然我已经使用了几次而没有出现重大问题。
答案 1 :(得分:1)
如果你需要一个大的本地对象存储,你必须处理数据库,SQlite3和CoreData是一个很好的包装器,它简化了SQlite3的操作。解析本地数据存储区为implemented with SQlite3,因此对象固定基本上是通过SQlite db中的NSManagedObjectContext调用来保存数据。
如果你需要比CoreData更高级别的抽象,你可以使用CoreData的包装器,检查here一些流行的库。任何敏感数据(如用户凭据)都应存储在keychain。
中答案 2 :(得分:0)
如果您只想保存当前用户对象,我认为最简单的方法是使用NSUserDefaults。
您可以轻松保存对象并检索它,只需要几行代码。
查看本教程,它可以帮助您实现它 http://swiftcoder.me/2014/08/17/persisting-data-with-nsuserdefaults/