NSManagedObjectContext 帮助
Posted
技术标签:
【中文标题】NSManagedObjectContext 帮助【英文标题】:NSManagedObjectContext Help 【发布时间】:2011-04-24 02:14:03 【问题描述】:我只是在尝试和学习。我有一个带有 1 个文本框、标签和保存按钮的简单视图。按下按钮时,我想将文本框中的数据保存到核心数据并更新标签。谢谢
在 DailyClinicalPerformanceRecord.m 中
- (IBAction)btnSave:(id)sender
DailyClinicalPerformanceRecord* delegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext* managedObjectContext = delegate.managedObjectContext;
NSManagedObject* newForm;
newForm = [NSEntityDescription insertNewObjectForEntityForName:@"DCPR" inManagedObjectContext:managedObjectContext];
[newForm setValue:txtIncidentNum.text forKey:@"indidentNum"];
txtIncidentNum.text = @"";
NSError *error;
[managedObjectContext save:&error];
status.text = @"Form Saved";
在 DailyClinicalPerformanceRecord.h 中
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
@interface DailyClinicalPerformanceRecord : UIViewController<UIApplicationDelegate>
UITextField *txtIncidentNum;
UILabel *status;
@property (nonatomic, retain) IBOutlet UITextField *txtIncidentNum;
@property (nonatomic, retain) IBOutlet UILabel *status;
- (IBAction)btnSave:(id)sender;
- (IBAction)btnBack:(id)sender;
- (void)dismissKeyboard;
@end
我收到错误:/Users/specked/Programs/EMTDocs/EMTDocs/DailyClinicalPerformanceRecord.m:67: error: request for member 'managedObjectContext' in something not a structure or union
和警告
/Users/specked/Programs/EMTDocs/EMTDocs/DailyClinicalPerformanceRecord.m:66: warning: type 'id <UIApplicationDelegate>' does not conform to the 'NSCoding' protocol
【问题讨论】:
【参考方案1】:很难对您的问题给出明确的答案,因为您没有提供有关问题所在的任何详细信息。但这里有几件事需要检查:
检查您是否已连接到 txtIncidentNum 和 status 对象以及 Interface Builder 中的 btnSave 方法 确保正在调用 btnSave(NSLog 很方便) 确保 managedObjectContext 不是 nil另外,这句话有点可疑:
DailyClinicalPerformanceRecord* delegate = [[UIApplication sharedApplication] delegate];
可疑之处在于它位于 DailyClinicalPerformanceRecord.m 中。如果此代码在 DailyClinicalPerformanceRecord.m 中并且 DailyClinicalPerformanceRecord 是您的委托,您可以通过 self 获取 managedObjectContext 而无需跳过这些环节。或者,它可能表明存在更大的问题和/或组织问题。
希望其中一项能让您走上正轨。如果没有,请扩展您的问题,详细了解按下保存按钮时发生了什么和没有发生什么。
【讨论】:
您确定的那一行是阻止我编译的那一行,但我在教程中看到它是这样做的。 @Specked 这确实感觉像是一个更大的问题。看起来 DailyClinicalPerformanceRecord 不是您的应用程序委托(特别是因为它是 UIViewController 的子类),尽管您将其视为是。如果您发布了整个项目,我相信我们可以弄清楚发生了什么,但也许是时候退后一步阅读 Apple 文档了。这是一个很好的开始:developer.apple.com/library/ios/#documentation/iPhone/…以上是关于NSManagedObjectContext 帮助的主要内容,如果未能解决你的问题,请参考以下文章
为啥将 NSManagedObjectContext 保存为“干净”时会出现合并错误?
了解核心数据中 NSManagedObjectContext 的使用
从另一个方法中删除 NSManagedObjectContext 中的对象
无法使用CoreData调用非函数类型'NSManagedObjectContext'的值
iOS - 核心数据堆栈作为带有主 NSManagedObjectContext 的单例
从 Swift 2.3 -> 3.2 转换时,无法将 String 类型的值转换为指定类型 NSManagedObjectContext