0

我有一个 iOS 6.1 应用程序,它使用具有一些有序关系的核心数据模型。它的下一个版本应该支持 iCloud。但是,iCloud 不允许在基于 SQLite 的 Core Data 模型中使用有序关系

Apple 对如何在这种情况下重构模型有任何建议,或者您是否获得了这方面的实践经验?我在 A 类和 B 类之间存在一对多的关系,例如 A1 到 B1、B2 和 A2 到 B2、B3,因此仅向 B 中添加索引属性无济于事。我可能必须引入一个与 A 和 B 一对一关系的新类 C(例如 C1 到 A1 和 B1),但如果可能的话,我想避免这种情况。

顺便说一句,如果我将原始核心数据模型与 iCloud 一起使用,我会遇到以下类型的多个错误消息,我认为这是由于存在有序关系:

错误:这个进程调用了一个 NSArray-takeing 方法,例如 initWithArray:,并传入了一个 NSSet 对象。目前正在解决此问题,但很快就会让您感到悲伤。

4

1 回答 1

1

我添加到名为 order 的对象属性。

我有一些与 FotoContent 对象具有“toMany”关系的对象。FotoContent 具有名为“url”的属性和属性“order”。在我的项目中,我需要让它们按 url 名称排序。所以让我们做这样的事情:

// 如果没有“复制”方法,您将收到错误消息

NSMutableArray *fotosToOrder = [[[object fotos]  copy]mutableArrayValueForKey:@"url"];  
//sort new array by url attribute
[fotosToOrder sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
        NSComparisonResult res = [(NSString*) obj1 caseInsensitiveCompare:(NSString *) obj2];
        return res;
    }];

//go through all sorted urls and add Order value to Fotos objects
int order = 0;
for (NSString *sortedFotoURL in fotosToOrder){
    for (FotoContent *unsortedFoto in object.fotos){
       if ([sortedFotoURL isEqualToString:unsortedFoto.url]){
            unsortedFoto.order = order;
            order++;
            break;
        }
     }
}
于 2013-03-13T08:05:46.650 回答