使用标签栏控制器使用核心数据添加记录

时间:2010-12-27 06:06:23

标签: iphone objective-c core-data

我正在尝试使用核心数据向数据库添加记录。 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”函数的末尾。不写记录到数据库或任何东西。

请帮忙!这真让我抓狂。

1 个答案:

答案 0 :(得分:0)

没有更多代码就很难说出来;但听起来好像没有设置burpListNavController。当您单步执行saveRecording:方法时,burpListNavController的值是0x0吗?如果是,那么你忘了将iVar设置在某个地方。

如果你来自另一种语言,这可能听起来有点奇怪,因为通常在空指针上调用一个方法会导致你崩溃。但是,在Objective-C中并非如此,向nil发送消息是完全合法的;但是不要指望实际发生任何事情。