objective-c - Core Data迁移后如何保持数据排序?

标签 objective-c iphone swift xcode core-data

在当前项目中,我有一组使用核心数据存储的对象。 现在我需要向 DataModel 添加一个字段。

我已经添加了它,创建了新的映射模型,将其设置为当前并成功迁移到新的数据模型。一切正常,但是……我的数据顺序丢失了。 由于某些奇怪的原因,以前的开发人员没有为数据模型创建任何顺序属性,并且在获取数据时自动对其进行了排序(我相信是按 id..)

使用映射模型迁移到新数据模型后,每次迁移后我的数据都会随机排序。 一些与此数据顺序相关的应用程序逻辑现在已损坏。

如何解决这个问题? 可以根据旧 ID 创建订单属性吗? 或者我如何使用 ID 进行迁移?

已经花了一天时间解决这个问题,但没有找到解决方案。

非常感谢! 亚历克斯。

请求检索数据代码:

NSEntityDescription *entityDescription = [NSEntityDescription entityForName:@"Area" inManagedObjectContext:[self context]];

NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:entityDescription];

NSError *error;
return  [[[self context] executeFetchRequest:request error:&error] mutableCopy];

最佳答案

最简单的方法是不依赖于某些内部排序。当您访问数据时,将排序描述符添加到获取请求中。

还要确保您的排序结果按顺序处理,请使用老式循环 for (int i = 0; i < array.count; i++)而不是枚举器 for (id a in array) .

关于objective-c - Core Data迁移后如何保持数据排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40625375/

相关文章:

iphone - [__NSArrayI count]:发送到已释放实例0x6dbfd10的消息

iphone - 是否有用于蓝色电子邮件地址气泡的 API?

iphone - 如何解析 Objective C 中的 ISO-8601 持续时间?

ios - 父子类之间的弱引用

objective-c - iPad iOS 内存管理 - 如何释放 UIImageViews、UIScrollViews 使用的 "Real Memory"?

objective-c - 引发异常 - NSTextView 委托(delegate) - textViewDidChangeSelection : notification

iPhone:保存并验证返回导航

iphone - EKEventEditViewController 不支持推送到 NavController 吗?请参阅附加的代码和错误

iOS CLLocationManager : Removing spikes

c++ - 从 C++ 调用 Swift 函数