2010-12-27 2 views
0

코어 데이터를 사용하여 데이터베이스에 레코드를 추가하려고합니다. 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

여기에 saveRecording 코드를 넣을 수 있습니까? – Ishu

답변

0

코드를 추가하지 않아도 알기가 어렵습니다. 하지만 그것은 burpListNavController가 설정되지 않은 것처럼 들립니다. saveRecording : 메소드를 수행 할 때, burpListNavController 0x0의 값은 무엇입니까? 그렇다면 당신은 어딘가에 그 iVar를 설정하는 것을 잊었습니다.

다른 언어에서 온 사람이라면 일반적으로 null 포인터에서 메소드를 호출하면 충돌이 발생할 수 있으므로 조금 이상하게 들릴 수 있습니다. Objective-C의 경우는 아니지만, 메시지를 nil에 보내는 것이 합법적입니다. 그러나 실제로 일어날 어떤 것도 기대하지 마십시오.

관련 문제