将值添加到核心数据中的特定索引

时间:2015-03-20 08:59:54

标签: ios core-data

// deleted all datas for entity before adding  

for (int i=0; i<[tempArray count]; i+=3)
{
    userData=(UserData *)[NSEntityDescription insertNewObjectForEntityForName:@"UserData" inManagedObjectContext:managedObjectContext];

    [userData setUserIcon:tempArray[i]];
    [userData setUserID:tempArray[i+1]];
    [userData setUserName:tempArray[i+2]];
    NSLog(@"loop values%@",[userData userName]);
}

记录的值以正确的顺序提供名称。但存储在核心数据中的值的顺序不正确。例如。循环中的值显示(苹果,球,猫,狗)但核心数据存储值显示(苹果,猫,球,狗)。我通过以下方式检查核心数据中的值:

NSFetchRequest *fetchRequest1 = [NSFetchRequest fetchRequestWithEntityName:@"UserData"];
fetchRequest1.resultType = NSDictionaryResultType;
[fetchRequest1 setPropertiesToFetch:[NSArray arrayWithObjects:@"userName", nil]];
fetchRequest1.returnsDistinctResults = YES;

NSArray *dictionaries1 = [self.managedObjectContext executeFetchRequest:fetchRequest1 error:nil];
NSLog (@"names after: %@",dictionaries1);

知道为什么订单不匹配???

另外,我可以将值添加到特定索引的核心数据中,以便我可以自己订购表吗?

或者我可以使用排序,但我应该排序整行,因为行中的属性彼此依赖。

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

我同意之前的回答 - 基于插入顺序的设计没有实际意义,因为这样的订单无法保证且难以维护。 最佳实践是应用排序谓词。 例如,您可以转到this SO question