0

UITableViewCore Dataを使用してアイテムを追加したり、必要に応じて削除したりできる 基本があります。

に5つのアイテムを追加するとしUITableViewます。これらの5つのアイテムを別のビュー、できればPDFにも表示したいと思います。

これを達成するための最良のアプローチは何ですか?

私も使用しようとしNSUserDefaultsていますが、表示される値は最後に入力された値だけです。

使用される主なコードの一部を次に示します。アドバイスをいただければ幸いです。

これはUIViewController私がテキストを入力したところからです:

-(NSManagedObjectContext * )managedObjectContext
{
    return [(AppDelegate *) [[UIApplication sharedApplication] delegate] managedObjectContext];
}

-(void)saveButtonTapped:(id)sender
{

    [self.managedObjectContext save:nil];


    if (_majorTextField.text == nil)
    {
        _majorString = @"";
    }
    else
    {
        _majorString = [[NSString alloc] initWithFormat:@"%@", _majorTextField.text];
        self.task.title = self.majorTextField.text;
        NSUserDefaults * majorDefault = [NSUserDefaults standardUserDefaults];
        [majorDefault setObject:_majorString forKey:@"major"];
    }
    [self.navigationController popViewControllerAnimated:YES];
 }

PDFにテキストを追加する場所は次のとおりです。

 +(void)createPDF:(NSString*)filePath
 {
    // Create the PDF context using the default page size of 612 x 792.
    UIGraphicsBeginPDFContextToFile(filePath, CGRectZero, nil);
    // Mark the beginning of a new page.
    UIGraphicsBeginPDFPageWithInfo(CGRectMake(0, 0, 612, 792), nil);

    NSUserDefaults * majorDefault = [NSUserDefaults standardUserDefaults];
    NSString * majorString = [majorDefault stringForKey:@"major"];

    [PDFRenderer drawText:majorString inFrame:CGRectMake(35, 190, 300, 50) fontName:@"TimesNewRomanPSMT" fontSize:14];

    UIGraphicsEndPDFContext();
}
4

1 に答える 1

0

NSManagedObjectContextビューコントローラーで表されたオブジェクトに変更を加える前に、保存しています。コンテキストを保存しますが、saveButtonTapped:後でのみ設定しますself.task.title ... おそらく何かが欠けています。しかし、変更後にコンテキストを保存したいと思いますself.task.title

問題の管理対象オブジェクトにアクセスする必要がある他のビューでは、 を構築し、NSFetchRequestに対してそのリクエストを実行することにより、それらをフェッチする必要がありますNSManagedObjectContext。あなたのモデルについてもっと知らなければ、実質的な例を挙げることはできません。しかし、それが基本的な考え方です。

必要に応じて、Core Data が理想的な場合もあれば、過剰な場合もあります。オブジェクト グラフの永続化テクノロジに Core Data を使用することで得られることはたくさんありますが、微妙な点もたくさんあります。アップルが言うように。「コアデータはエントリーレベルのテクノロジーではありません。」(アップル、「コアデータ入門」 )

私たちはおそらくこれに罪を犯していますが、エラーオブジェクトを渡し[self.managedObjectContext save:nil];て戻り値を処理する必要があります。

NSError *saveError = nil;
if( ![[self managedObjectContext] save:&saveError] ) {
    // do something with saveError
}

編集:

Core Data は、コメントで説明したもので問題ありません。永続ストア、管理オブジェクト コンテキストなどの基本原則を理解するだけの問題です。Core Data で得られるのは、テーブル ビューでデータを表示するための便利なセットですNSFetchedResultsController

于 2012-12-04T02:04:06.800 に答える