1

エンティティを印刷したいと思います。

JSON があり、値を取得し、エンティティに設定します。エンティティを表示して、適切に設定されているかどうかを確認したいのですが、どうすればよいですか?

これが私のコードです。動作しているようです.NSLOGは私が望むものを出力します. いいね。

- (void)viewDidLoad
{
    [super viewDidLoad];

    dataToDisplay = [[NSMutableArray alloc] init];

    //récupération du chemin vers le fichier contenant le JSON
    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"JSON" ofType:@"txt"];

    //création d'un string avec le contenu du JSON
    NSString *myJSON = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];   

    //Parsage du JSON à l'aide du framework importé
    NSDictionary *json    = [myJSON JSONValue];

    //récupération  du total des Boxes
    NSDictionary *resultats    = [json objectForKey:@"totalBox"];

    //récupération du tableau de Boxes
    NSArray *listBoxes    =  [resultats objectForKey:@"boxes"];

    //On parcourt la liste de boxes
    for (NSDictionary *dic in listBoxes) {

        getBoxes *boxes = [[getBoxes alloc] init];
        boxes.nameBox = [dic objectForKey:@"boxName"];
        //renseingement du score
        boxes.priceBox = [dic objectForKey:@"boxPrice"];
        boxes.kindBox = [dic objectForKey:@"boxKind"];
        boxes.typeBox = [dic objectForKey:@"boxType"];
        //ajout à la liste
        [dataToDisplay addObject:boxes];

        //libération de la mémoire
        [boxes release];
    }

    NSLog(@"boxKind %@", [[listBoxes objectAtIndex:1] valueForKey:@"boxKind"]);
    //à ne pas oublier après l'allocation effectuée au début


    // TEST 
    NSManagedObjectContext *cxt = [self managedObjectContext];
    NSManagedObject *newBoxes = [NSEntityDescription insertNewObjectForEntityForName:@"Boxes" inManagedObjectContext:cxt];
    [newBoxes setValue:[[listBoxes objectAtIndex:1] valueForKey:@"boxKind"] forKey:@"kindBox"];
    [newBoxes setValue:[[listBoxes objectAtIndex:1] valueForKey:@"boxPrice"] forKey:@"priceBox"];
    [newBoxes setValue:[[listBoxes objectAtIndex:1] valueForKey:@"boxType"] forKey:@"typeBox"];
    [newBoxes setValue:[[listBoxes objectAtIndex:1] valueForKey:@"boxName"] forKey:@"nameBox"];


    NSError *err;
    if (![cxt save:&err]) {
        NSLog(@"An error has occured: %@", [err localizedDescription]);
    }

    [myJSON release];

    NSLog(@"%@", [newBoxes valueForKey:@"kindBox"]);
    NSLog(@"%@", [newBoxes valueForKey:@"priceBox"]);
    NSLog(@"%@", [newBoxes valueForKey:@"typeBox"]);
    NSLog(@"%@", [newBoxes valueForKey:@"nameBox"]);


}
4

1 に答える 1

0

この方法を探してください

entityForName:inManagedObjectContext:

指定された管理オブジェクト コンテキストの永続ストア コーディネーターに関連付けられた管理オブジェクト モデルから、指定された名前のエンティティを返します。

戻り値 コンテキストの永続ストア コーディネーターに関連付けられた管理対象オブジェクト モデルから指定された名前を持つエンティティ。

このメソッドは、次のコード例と機能的に同等です。

NSManagedObjectModel *managedObjectModel = [[context persistentStoreCoordinator] managedObjectModel];
NSEntityDescription *entity = [[managedObjectModel entitiesByName] objectForKey:entityName];
return entity;

このようなものを探していないことを願っています

NSLog(@"%@",[newBoxes name]);
于 2012-04-26T14:32:48.913 に答える