Objective c ModalViewController不';不保存到核心数据?
iPad应用程序粉丝: 我有一个modalviewcontroller,可以在点击按钮时弹出,用户可以添加注释或更改数据输入。在对数据库进行更改时,需要刷新主窗口中的表。该数据库包含一种高级书签。我可以根据用户浏览的位置创建和删除数据库条目——没问题:我得到控制台报告“saveContext KQVC line 203”,条目会快速添加到表中 modalviewcontroller甚至会弹出(点击每个单元格中的蓝色(>)详细信息图标)现有记录的填充数据。但是,modalviewcontroller上的“保存”按钮不保存。(删除功能非常有效)。以下是我的modalviewcontroller保存按钮代码:Objective c ModalViewController不';不保存到核心数据?,objective-c,core-data,modalviewcontroller,Objective C,Core Data,Modalviewcontroller,iPad应用程序粉丝: 我有一个modalviewcontroller,可以在点击按钮时弹出,用户可以添加注释或更改数据输入。在对数据库进行更改时,需要刷新主窗口中的表。该数据库包含一种高级书签。我可以根据用户浏览的位置创建和删除数据库条目——没问题:我得到控制台报告“saveContext KQVC line 203”,条目会快速添加到表中 modalviewcontroller甚至会弹出(点击每个单元格中的蓝色(>)详细信息图标)现有记录的填充数据。但是,modalviewcontrolle
#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方法?如果您能提供任何建议,我们将不胜感激。是否调用了您的
save
方法?调用knittingQueenViewController
时,它是否为非nil?patternA
的值看起来正确吗?是否调用了save
方法?调用knittingQueenViewController
时,它是否为非nil?patternA
的值看起来正确吗?这里的前两个问题中的一个几乎可以肯定是问题所在。@noa对Q1的回答:调用了该方法,但因为knittingQueenViewController根据该回答进行了零测试。问题2的答案是:零。所以我使用了alloc init,现在它崩溃了。在这里分配另一个不会对您有帮助,例如,它没有对您的FetchedResultsController或ManagedObjectContext的引用。您首先在哪里分配和初始化PatternViewController?来自代码?您可能需要在那里添加一些代码,将knittingQueenViewController
设置为已创建的实例。@noa是的,它来自代码。以下是KnittingQueenViewController
中PatternViewController
的分配和初始化<代码>-(iAction)新模式{PatternViewController*控制器=[[PatternViewController alloc]initWithNibName:@“PatternViewController”捆绑包:nil];controller.modalTransitionStyle=UIModalTransitionStyleCoverVertical;controller.modalPresentationStyle=UIModalPresentationFormSheet;[self-presentModalViewController:控制器动画:是];[controller release];}你有什么建议吗?很酷。只需在调用initWithNibName
后添加controller.knitingQueenViewController=self;
。这里的前两个问题之一几乎可以肯定就是问题所在。@noa对Q1的回答:调用了该方法,但因为根据该回答,KnitingQueenViewController测试为零。回答对于Q2:它是零。所以我已经分配了alloc init,现在它崩溃了。在这里分配另一个不会对您有帮助-例如,它没有对您的FetchedResultsController或ManagedObjectContext的引用。您首先在哪里分配和初始化PatternViewController?从代码?您可能需要在那里添加一些设置knittingQu的代码eenViewController
到已创建的实例。@noa是的,它来自代码。以下是KnittingQueenViewController
中PatternViewController
的分配和初始化操作-(iAction)newPattern{PatternViewController*控制器=[[PatternViewController alloc]initWithNibName:@“PatternViewController”bundle:nil];controller.modalTransitionStyle=UIModalTransitionStyleCoverVertical;controller.modalPresentStyle=UIModalPresentationFormSheet;[self-presentModalViewController:controller动画:是];[controller release];]你有什么建议?很酷。只需在调用initWithNibName
后添加controller.knitingQueenViewController=self;
。