2014-01-28 2 views
0

Я думаю, что это не сложно, но я столкнулся с проблемой с ними. Я получаю дату ядра и после его получения, я пытаюсь сохранить его в nsarray. , но каждый раз, когда последние данные из базы данных сохраняются в массиве. Я хочу, чтобы все данные были вставлены в базы данных. Предположим, у меня есть имя атрибута account_name i добавлено A, B, C, X, Y, Z. в этом коде я получаю последнее значение Z в моем массиве. :( но когда я распечатать его, то я получаю все данные .. любое решениеизвлекать данные ядра и сохранять его в nsarray

NSArray *fetchedObjects; 
AppDelegate *delegate = [UIApplication sharedApplication].delegate; 
NSManagedObjectContext *context = [delegate managedObjectContext]; 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Chart_of_Accounting" inManagedObjectContext:context]; 
[fetchRequest setEntity:entity]; 

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

for (NSManagedObject *obj in fetchedObjects) { 
    debitArray = [NSMutableArray arrayWithObject:[obj valueForKey:@"account_name"]]; 
    creditArray = [NSMutableArray arrayWithObject:[obj valueForKey:@"account_name"]]; 
    NSLog(@"Account Name: %@", [obj valueForKey:@"account_name"]); 
} 

ответ

2

Попробуйте

NSArray *fetchedObjects; 
AppDelegate *delegate = [UIApplication sharedApplication].delegate; 
NSManagedObjectContext *context = [delegate managedObjectContext]; 
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Chart_of_Accounting" inManagedObjectContext:context]; 
[fetchRequest setEntity:entity]; 

NSError *error; 
fetchedObjects = [context executeFetchRequest:fetchRequest error:&error]; 
NSMutableArray *debitArray = [[NSMutableArray alloc] init]; 
NSMutableArray *creditArray = [[NSMutableArray alloc] init]; 
for (NSManagedObject *obj in fetchedObjects) { 
    [debitArray addObject:[obj valueForKey:@"account_name"]]; 
    [creditArray addObject:[obj valueForKey:@"account_name"]]; 
    NSLog(@"Account Name: %@", [obj valueForKey:@"account_name"]); 
} 
+0

это работает .. спасибо много всего .. :) –

0

Потому что, каждый раз, когда его получить инициализирован Используйте addObject

debitArray = creditArray = [[NSMutableArray alloc] init]; 
for (NSManagedObject *obj in fetchedObjects) { 
    [debitArray addObject:[obj valueForKey:@"account_name"]]; 
    [creditArray addObject:[obj valueForKey:@"account_name"]]; 

}NSLog(@"Account Name: %@", [obj valueForKey:@"account_name"]); 
0

В вашем цикле:?.

for (NSManagedObject *obj in fetchedObjects) { 
    debitArray = [NSMutableArray arrayWithObject:[obj valueForKey:@"account_name"]]; 
    creditArray = [NSMutableArray arrayWithObject:[obj valueForKey:@"account_name"]]; 
    NSLog(@"Account Name: %@", [obj valueForKey:@"account_name"]); 
} 

Вы создаете новый массив каждый раз (и переопределяете предыдущий). Это объясняет, что происходит.

Вы должны создать экземпляр массива вне цикла, а затем добавить к нему объекты в цикле.

debitArray = [NSMutableArray arrayWithCapacity:[fetchedObjects count]]; 
creditArray = [NSMutableArray arrayWithCapacity:[fetchedObjects count]]; 

for (NSManagedObject *obj in fetchedObjects) { 

    [debitArray addObject:[obj valueForKey:@"account_name"]]; 
    [creditArray addObject:[obj valueForKey:@"account_name"]]; 
    NSLog(@"Account Name: %@", [obj valueForKey:@"account_name"]); 

} 
0

Не создавайте повторяющиеся значения в разных массивах.

возвращает ваши данные fetchedObjects как NSArray Type, а затем извлекает из coredata.

fetchedObjects=[self yourRetriveMethod]; 

    for (NSManagedObject *obj in fetchedObjects) { 
     debitArray = [NSMutableArray arrayWithObject:[obj valueForKey:@"account_name"]]; 
     creditArray = [NSMutableArray arrayWithObject:[obj valueForKey:@"account_name"]]; 
     NSLog(@"Account Name: %@", [obj valueForKey:@"account_name"]); 
    } 
Смежные вопросы