ModalViewController 不保存到核心数据?

Posted

技术标签:

【中文标题】ModalViewController 不保存到核心数据?【英文标题】:ModalViewController doesn't save to core data? 【发布时间】:2011-08-18 02:41:11 【问题描述】:

iPad 应用爱好者:

我有一个 modalviewcontroller 设计用于在点击按钮时弹出,以便用户可以添加注释或更改数据输入。对数据库进行更改时,需要刷新主窗口中的表。该数据库包含一种高级书签。我可以根据用户浏览的位置创建和删除数据库条目 - 没问题:我得到控制台报告“saveContext KQVC line 203”并且条目被快速添加到表中。

modalviewcontroller 甚至会弹出(点击每个单元格中的蓝色 (>) 详细信息图标),其中包含现有记录的填充数据。然而,modalviewcontroller 上的保存按钮只是不保存。 (删除功能很好用)。这是 modalviewcontroller 保存按钮的代码:

#import "PatternViewController.h"
#import "KnittingQueenViewController.h"

 @implementation PatternViewController
 @dynamic patternName, patternNotes, patternUrl, dateAdded;
 @synthesize patternA, patternView, knittingQueenViewController;

-(IBAction)save 
    [patternA setValue:patternName.text forKey:@"patternName"];
    [patternA setValue:patternUrl.text forKey:@"patternUrl"];
    [patternA setValue:patternNotes.text forKey:@"patternNotes"];
    dateAdded = [NSDate date];
    [patternA setValue:dateAdded forKey:@"dateAdded"];
    [patternA setValue:patternLabel.text forKey:@"patternLabel"];
    [patternA setValue:pngPath forKey:@"patternPhoto"];   

    [knittingQueenViewController saveContext];
    [self dismissModalViewControllerAnimated:YES];

还有knittingqueenviewcontroller中的saveContext方法:

- (void)saveContext 
    NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext]; 
    NSError *error = nil;
    if (![context save:&error]) 
         // error code goes in here
    
    NSLog(@"saveContext KQVC line 203");
    [self refreshPatternsTable];

我没有收到任何错误,但也没有保存数据。我的问题:为什么不从 modalviewcontroller 调用 saveContext 方法?您能提供的任何建议将不胜感激。

【问题讨论】:

【参考方案1】:

你的save 方法被调用了吗? knittingQueenViewController 被调用时是否为非零? patternA 的值看起来正确吗?

【讨论】:

这里的前两个问题之一几乎可以肯定是问题所在。 @noa 对 Q1 的回答:正在调用该方法,但因为 knittingQueenViewController 是 nil ***.com/questions/3678180/… 根据此答案进行测试。 Q2的答案:它是零。所以我分配了 init,现在它崩溃了。 在这里分配另一个对您没有帮助 - 例如,它没有对您的 FetchedResultsController 或 ManagedObjectContext 的引用。你首先在哪里分配和初始化 PatternViewController?从代码?您可能需要在此处添加一些代码,将 knittingQueenViewController 设置为已创建的实例。 @noa 是的,它来自代码。这是KnittingQueenViewControllerPatternViewController的分配和初始化。 -(IBAction)newPattern PatternViewController *controller = [[PatternViewController alloc] initWithNibName:@"PatternViewController" bundle:nil]; controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; controller.modalPresentationStyle = UIModalPresentationFormSheet; [self presentModalViewController:controller animated:YES]; [controller release]; 你有什么建议? 酷。只需在调用initWithNibName 后添加controller.knittingQueenViewController = self;

以上是关于ModalViewController 不保存到核心数据?的主要内容,如果未能解决你的问题,请参考以下文章

ModalViewController 框架移动

如何在不关闭模式的情况下关闭从 modalViewController 推送的 viewController?

iOS:在不访问其父 ViewController 的情况下关闭和呈现 ModalViewController

从大间隔分类器到核函数:全面理解支持向量机

从另一个 modalviewcontroller 关闭 modalviewcontroller

从另一个 modalviewcontroller 呈现 ModalViewcontroller