Chatar Veer Suthar
Chatar Veer Suthar

Reputation: 15639

Sequence of CoreData inserting in iphone is not as I am inserting

I am inserting some objects in coredata, but when I do retrieve them, their sequence is not same as I inserted, even index is properly managed,

-(void)addQuestion
 {
NSManagedObjectContext *context = [self managedObjectContext];

NSMutableArray *array = [[NSMutableArray alloc] init];

[array addObject:@"What is capital of Australia?"];
[array addObject:@"What is capital of Canada?"];
[array addObject:@"What is capital of UAE?"];
[array addObject:@"What is capital of USA?"];
[array addObject:@"What is capital of Pakistan?"];
[array addObject:@"What is capital of China?"];
[array addObject:@"What is capital of UK?"];
[array addObject:@"What is capital of Russia?"];
[array addObject:@"What is capital of Romania?"];
[array addObject:@"What is capital of Germany?"];


for (int x = 0; x<10; x++) {

    Question *question = [NSEntityDescription
                          insertNewObjectForEntityForName:@"Question"
                          inManagedObjectContext:context];
    question.question =  [array objectAtIndex:x];
    question.answer = @"Testville";
    question.mcqsa = @"Sydney";
    question.mcqsb = @"Canbera";
    question.mcqsc =  @"Berlin";
    question.mcqsd = @"Bern";

}



NSError *error;
if (![context save:&error]) {
    NSLog(@"Whoops, couldn't save: %@", [error localizedDescription]);
}

// Test listing all FailedBankInfos from the store
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Question"
                                          inManagedObjectContext:context];
[fetchRequest setEntity:entity];


NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];

for (Question *info in fetchedObjects) {
    NSLog(@"Name: %@", info.question);
}

}

LOg Displays

2013-06-04 17:59:59.978 iQuiz[972:c07] Name: What is capital of Romania?
2013-06-04 17:59:59.979 iQuiz[972:c07] Name: What is capital of Australia?
2013-06-04 17:59:59.979 iQuiz[972:c07] Name: What is capital of Pakistan?  
2013-06-04 17:59:59.980 iQuiz[972:c07] Name: What is capital of Russia? 
2013-06-04 17:59:59.980 iQuiz[972:c07] Name: What is capital of USA?
2013-06-04 17:59:59.981 iQuiz[972:c07] Name: What is capital of UK?
2013-06-04 17:59:59.981 iQuiz[972:c07] Name: What is capital of UAE?
2013-06-04 17:59:59.982 iQuiz[972:c07] Name: What is capital of Germany?
2013-06-04 17:59:59.982 iQuiz[972:c07] Name: What is capital of China?
2013-06-04 17:59:59.982 iQuiz[972:c07] Name: What is capital of Canada?

Upvotes: 1

Views: 252

Answers (3)

real 19
real 19

Reputation: 748

Yes, its normal. Totally. Just track id yourself and use NSSortDescriptor to sort on it while quering. That is the recommended approach.

Upvotes: 0

THE_DOM
THE_DOM

Reputation: 4296

Another way to solve this is to have a relationship rather than an attribute. Then set the relationship to ordered.

Upvotes: 0

Scott Berrevoets
Scott Berrevoets

Reputation: 16946

That's normal behavior. Insertion order (or any order for that matter) is not guaranteed. If the order is important, add an extra attribute index that you increment and can sort on when fetching objects.

Upvotes: 3

Related Questions