Jak*_*kub 6 core-data objective-c ios
我想显示来自后端的数据所以让我们有一个示例json文件:
{
"fonts": [
{
"name": "Helvetica",
"styleIdentifier": "H0",
"size": 17
},
{
"name": "Helvetica",
"styleIdentifier": "H1",
"size": 14
},
{
"name": "Helvetica-Bold",
"styleIdentifier": "H0Bold",
"size": 17
},
{
"name": "HelveticaNeue-Light",
"styleIdentifier": "H0Light",
"size": 40
}
]
}
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个relationship(很多 - 多个)ordered选项.通过输入我看到它总是以相同的方式写入Core Data,但是当我尝试获取它时
configuratation.fonts这里fonts是NSOrderedSet我得到了完全地随机顺序的项目.我想念某个规格?或者我应该以某种方式排序?
__编辑__
首先,当我从上面的json获取数据时,我有一个空字体关系的配置集.然后我获取它并将其插入到核心数据中:
NSMutableArray *returnArray = [NSMutableArray new];
for(NSDictionary *fontDictionary in jsonArray) {
Font *fontObj = [Font font:fontDictionary inContext:context];
[returnArray addObject:fontObj];
}
Run Code Online (Sandbox Code Playgroud)
并且在此数组中数据的顺序正确.然后在配置对象中我将其添加到NSOrderedSet:
-(void)appendTracks:(NSArray<Font*>*)fontArray {
self.fonts = [NSOrderedSet orderedSetWithArray: fontArray];
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试通过简单地使用引用来获取它:
configuration.fonts
Run Code Online (Sandbox Code Playgroud)
在此步骤中,数据完全不正确.
不要直接设置 NSOrderedSet。
修改现有集:
[self.fonts addObjectsFromArray:fontArray];
Run Code Online (Sandbox Code Playgroud)
或者:
Xcode 生成方法来在生成的类中的有序集中添加和删除条目NSManagedObject。
假设您有一个Entity被调用的对象ManagedConfiguration,其中包含一个名为 的有序多关系fonts:
ManagedConfiguration *managedObjectConfigurationInstance = //create or fetch configuration in ManagedObjectContext
NSOrderedSet<ManagedFont> *fonts = //created or fetched fonts in wanted order
managedObjectConfigurationInstance.addToFonts(fonts)
Run Code Online (Sandbox Code Playgroud)
replaceFonts,removeFromFontsAtIndex麻生太郎。方法也被生成。
根据您的要求,您可能希望以随机顺序存储字体,并应用 aNSSortDescriptor来NSFetchRequest以特定顺序获取数据。