数据在iOS中以无序方式插入

时间:2014-07-07 11:56:10

标签: ios nsdictionary plist objective-c-blocks

我试图通过从plist中获取样本数据来将样本数据插入到核心数据中。 但是这些数据没有以Ordered方式插入。

  
    

以下是我的plist结构。

  

Plist structure

  
    

以下是我尝试的代码。

  
NSArray *aArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle]pathForResource:@"SampleData" ofType:@"plist"]];

    for (NSDictionary *aDict in aArray ) 
    {

        [aDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop)
        {
            //--- UPDTATE -->>
            // while debugging I found one issue that -  
            //Here "obj" has three array - Sample List 1C,Sample List 1A,Sample List 1B
            // This should be Sample List 1A,Sample List 1B,Sample List 1C

            NSDictionary *aSubDict = (NSDictionary *)obj;
            NSMutableArray *aMutCheckpoint = [NSMutableArray array];

            //.… below is my logic for core data insertion…

        }]; 
    }

任何人都可以建议我在插入数据时如何获得有序值。

1 个答案:

答案 0 :(得分:2)

如果要以固定顺序从NSDictionary检索值,则需要订购用于检索这些值的键。这是因为词典基本上是无序的数据结构。

所以这是一种方式(还有其他方法对键进行排序):

for (NSDictionary *aDict in aArray) 
{
    NSArray *sortedKeys = [[aDict allKeys] sortedArrayUsingSelector:@selector(compare:)];
    for (NSString *key in sortedKeys)
    {        
        id obj = aDict[key];
        // etc.
    }
}