我正在尝试使用核心数据向数据库添加记录。 appDelegate中包含托管对象模型,上下文和存储协调器设置。启动应用程序并在我的一个视图中查询fetchResultsController方法时,将创建与该方案匹配的数据库,其中包含正确的表名和列。但是,当我尝试向表中添加记录时,问题就出现了。
BurpListNavController.h文件包含以下内容(我刚刚学习):
#import <UIKit/UIKit.h>
@class BurpRecordController;
@interface BurpListNavController : UINavigationController <NSFetchedResultsControllerDelegate> {
BurpRecordController *burpRecordController;
NSFetchedResultsController *fetchedResultsController;
NSManagedObjectContext *managedObjectContext;
}
@property (nonatomic, retain) IBOutlet BurpRecordController *burpRecordController;
@property (nonatomic, retain) NSFetchedResultsController *fetchedResultsController;
@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
- (void)saveBurpLocal:(id)sender;
@end
然后我有一个记录打嗝的视图,是数千个打嗝应用程序中的另一个。哈哈。以下代码如下:
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
#import <CoreAudio/CoreAudioTypes.h>
@class BurpLocal;
@class BurpListNavController;
@interface BurpRecordController : UIViewController <AVAudioRecorderDelegate, UIActionSheetDelegate> {
/*** Outlets to talk to the view ***/
IBOutlet UITextField *burpName;
IBOutlet UIButton *_recordButton;
/*** Standard Variables ***/
NSURL *recordedTmpFile;
//AVAudioRecorder *recorder;
NSError *error;
BurpLocal *burpLocal;
BurpListNavController *burpListNavController;
}
/*** Properties ***/
@property (nonatomic, retain) IBOutlet UITextField *burpName;
@property (nonatomic, retain) IBOutlet UIButton *recordButton;
@property (nonatomic, assign) IBOutlet BurpListNavController *burpListNavController;
@property(nonatomic, retain) BurpLocal *burpLocal;
/*** Method ***/
-(IBAction)saveRecording:(id)sender;
-(void)applicationWillTerminate:(NSNotification *)notification;
@end
当最终用户按下“保存”按钮时,它会调用“saveRecording”方法,我可以进入该方法并且非常棒。然后我尝试在“saveRecording”方法中调用以下代码行:[burpListNavController saveBurpLocal:sender];认为这将在导航控制器中调用“saveBurpLocal”方法,它只是跨过它,不会停在导航控制器方法的断点处,然后只是到当前“saveRecording”函数的末尾。不写记录到数据库或任何东西。
请帮忙!这真让我抓狂。
答案 0 :(得分:0)
没有更多代码就很难说出来;但听起来好像没有设置burpListNavController。当您单步执行saveRecording:方法时,burpListNavController的值是0x0吗?如果是,那么你忘了将iVar设置在某个地方。
如果你来自另一种语言,这可能听起来有点奇怪,因为通常在空指针上调用一个方法会导致你崩溃。但是,在Objective-C中并非如此,向nil发送消息是完全合法的;但是不要指望实际发生任何事情。