2012-04-30 56 views
0

哪里是我的probleme?我想填充我coredata与我的JSON,但其仅填充的最后一个对象,我的意思是这一个:核心数据,填充我Coredata与我的JSON

phone.name = [[[json valueForKey:@"boxesDetail"] objectAtIndex:1] valueForKey:@"name"]; 
     phone.number = [NSNumber numberWithInt:[[[[json valueForKey:@"boxesDetail"] objectAtIndex:1] valueForKey:@"number"] intValue]]; 

,而不是以前的。

这是我的代码:

- (void) add{ 
    NSManagedObjectContext *context = [app managedObjectContext]; 
    Phone *phone = [NSEntityDescription insertNewObjectForEntityForName:@"Phone" inManagedObjectContext:context]; 

    if (nameText.text.length <= 0 || numberText.text.length <= 0) 
    { 
     NSLog(@" hey hey, t'as pas oublié kkchose ?"); 
    } 
    else 
    { 
     phone.name = nameText.text; 
     phone.number = [NSNumber numberWithInt:[ numberText.text intValue]]; 

     NSLog(@"ADD : %@", phone.name); 

     [[NSNotificationCenter defaultCenter] postNotificationName:@"Test" object:self]; 

     [self dismissModalViewControllerAnimated:YES]; 
    } 


    NSString *urlString = [NSString stringWithFormat:@"http://localhost:8888/json.txt"]; 
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]; 
    NSError *err; 

    NSMutableArray *json = (NSMutableArray*)[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&err]; 


    for (int i = 0; i != 2; i++) 
    { 
     phone.name = [[[json valueForKey:@"boxesDetail"] objectAtIndex:i] valueForKey:@"name"]; 
     phone.number = [NSNumber numberWithInt:[[[[json valueForKey:@"boxesDetail"] objectAtIndex:i] valueForKey:@"number"] intValue]]; 
    } 


    NSFetchRequest *request = [[NSFetchRequest alloc] init]; 

    NSEntityDescription *entity = [NSEntityDescription entityForName:@"Phone" inManagedObjectContext:context]; 

    [request setEntity:entity]; 

    NSArray *array = [context executeFetchRequest:request error:&err]; 

    for (Phone *pho in array) 
    { 
     NSLog(@"NAME %@", pho.name); 
     NSLog(@"PHONE %@", pho.number); 
    } 

} 

顺便说一句,如果你有一个想法,使我不能编码一个循环来填充核心数据,我会感谢你^^

回答

0

你只创建一个在这条线的管理对象:

NSManagedObjectContext *context = [app managedObjectContext]; 

然后设置的名称和号码字段在这些行三次:

for (int i = 0; i != 2; i++) 
{ 
    phone.name = [[[json valueForKey:@"boxesDetail"] objectAtIndex:i] valueForKey:@"name"]; 
    phone.number = [NSNumber numberWithInt:[[[[json valueForKey:@"boxesDetail"] objectAtIndex:i] valueForKey:@"number"] intValue]]; 
} 

我猜你要创建和填充三个对象,而不只是一个。将循环内的管理对象的创建。

for (int i = 0; i != 2; i++) 
{ 
    Phone *phone = [NSEntityDescription insertNewObjectForEntityForName:@"Phone" inManagedObjectContext:context]; 
    phone.name = [[[json valueForKey:@"boxesDetail"] objectAtIndex:i] valueForKey:@"name"]; 
    phone.number = [NSNumber numberWithInt:[[[[json valueForKey:@"boxesDetail"] objectAtIndex:i] valueForKey:@"number"] intValue]]; 
}