我正在制作一个简单的银行帐户跟踪器,用于自我指导。我正在使用核心数据来存储三个实体,如屏幕截图所示:
WMMGTransaction对象在记录时就被简单存储,并根据需要提取以提供表格视图和详细视图。这将通过NSFetchedResultsController
和谓词完成。如果有的话,我正在使用MagicalRecord访问Core Data。
我的问题是这样的:
当我将WMMGAccount
数据从一个VC传递到另一个VC时,例如在创建新帐户时,或从列表中选择一个(通常是通过委派)时,是否将引用传递给整个实体就不重要了;或者我可以只使用带有帐户NSString
的.name
并在需要时使用谓词和NSFetchedResultsController
标识帐户吗?我想这是一个战略问题,可能引起讨论,而不是一刀切的回答,但我一直在努力,所以我想问一下。
最佳答案
听起来好像您在询问是否应该将一个对象传递给需要它的代码,或者是否应该传递可以用于再次查找同一对象的信息。
除非需要在其他线程或队列上使用托管对象,否则应始终传递实际对象。重新获取您已经拥有的对象没有任何意义。额外的工作和代码的复杂性(除非您没有提到一些异常的扩展细节)对任何方式都没有帮助。
如果需要在不同的队列或线程上使用该对象,则传递可用于查找该对象的信息是正确的方法。但是在那种情况下-不要传递属性之一的值。使用托管对象ID。
核心数据不会强制name
值唯一,而对象的managedObjectID
是唯一的。检索对象时它也更快,因为您可以使用objectForID:
或existingObjectForID:
而不是执行提取。
关于ios - 核心数据-通过实体名称还是对整个实体的引用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29223462/