0

我有一個基本的UITableView,我可以使用核心數據添加項目,如果需要刪除。如何顯示我的Core Data值?

比方說,我添加5項到UITableView。我還想在另一個視圖上顯示這五個項目,最好是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(); 
} 
+0

NSUserDefaults只爲每個鍵存儲一個值。因此,每次爲「主要」關鍵字存儲值時,都會有效地覆蓋該值。無論如何,您應該查看NSFetchRequest來獲取所需的記錄,循環查看結果並以這種方式創建PDF。看到這裏http://mobile.tutsplus.com/tutorials/iphone/iphone-core-data/ – JamesSugrue

回答

0

您保存您NSManagedObjectContext進行更改之前,到視圖控制器中的表示對象。在saveButtonTapped:你保存的上下文,但只有稍後設置self.task.title ...也許我失去了一些東西;但我想你想在更改self.task.title之後保存上下文。

在需要訪問相關管理對象的其他視圖中,您需要通過構建NSFetchRequest並對NSManagedObjectContext執行該請求來獲取它們。如果不知道更多關於你的模型的內容,但這是基本的想法。

根據您的需求,核心數據可能是理想的或可能是矯枉過正。將Core Data用於對象圖持久性技術還有很多需要獲得的東西 - 但還有很多微妙之處。正如蘋果所說的那樣。 「核心數據不是入門級技術。」 (蘋果,「入門核心數據」

我們可能都犯了這一點,但你應該在[self.managedObjectContext save:nil];傳遞一個錯誤的對象和處理的返回值,正是如此:

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

編輯:

核心數據適合您在評論中描述的內容。這只是理解持久性存儲的基本原則,管理對象上下文等問題。核心數據所獲得的一系列便利是在表視圖中顯示數據,即NSFetchedResultsController

+0

我不是100%確定這是否是我選擇的正確道路。最終我想要一張我可以編輯的表格(添加行,刪除行,重新排列),每行都可以輸入詳細視圖以輸入更多信息,然後將所有信息很好地顯示在PDF上。您還有其他方法可以推薦您實現這一目標嗎? –

相關問題