【问题标题】:Adding Record using Core Data with Tab Bar Controller使用带有标签栏控制器的核心数据添加记录
【发布时间】:2010-12-27 06:06:23
【问题描述】:

我正在尝试使用核心数据向数据库添加一条记录。 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

然后我有一个记录 burp 的视图,是的,数千个 burp 应用程序中的另一个。哈哈。以下代码如下:

#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”函数的末尾。不将记录写入数据库或任何东西。

请帮忙!这真让我抓狂。

【问题讨论】:

  • 你能把 saveRecording 的代码放在这里吗?

标签: iphone objective-c core-data


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 1970-01-01
    • 2014-06-13
    • 2016-11-08
    • 2014-04-24
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多