2013-04-06 2 views
1

이 문제는 간단한 문제 일 것이라고 생각했지만, 조금 더 어렵고 좌절감을 안겨주었습니다.코어 데이터로 세그먼트 화 된 컨트롤을 문제 해결

저는 UISegmentedControl을 사용하여 선택을 한 다음 NSNumber 엔터티를 사용하여 코어 데이터에 저장했습니다. 불행히도 정수를 세그먼트 컨트롤에서 NSNumber로 변환하려고하면 null이됩니다. 다음은 내 문제의 샘플 코드입니다.

// ViewController.h 

#import <UIKit/UIKit.h> 
#import "Object.h" 

@interface ViewController : UIViewController 

@property (weak, nonatomic) IBOutlet UISegmentedControl *segmentOutlet; 

@property (strong, nonatomic) Object *currentObject; //core data object with an entity named subObject as an NSNumber 

- (IBAction)segmentControlSelected:(id)sender; 

@end 

//ViewController.m 

-(IBAction)segmentControllerSelected 
    { 
    [self.segmentOutlet selectedSegmentIndex] // segment control 
    currentObject.subObject = [NSNumber numberWithInt:([self.segmentOutlet selectSegmentIndex]); 
NSLog(@"the another Object number is %@", currentObject.subObject); 
    } 

NSLog %의 @ 결과는 (널), 그래서 어떻게 올바른이 확실하지 않다.

나는 프로그래밍을 배우기 시작 했으므로 신입생 실수 일뿐입니다. 도움을 주셔서 감사합니다.

+0

interfacebuilder의 UISegmentedControl에 segmentOutlet을 연결 했습니까? –

+0

@TimDean 예, 모든 유선 –

+0

로깅을 설정하십시오. self.segmentOutlet을 설정 한 다음 로그합니다. [self.segmentOutlet selectSegmentIndex] –

답변

0

segmentOutletstrong으로 지정해야합니다. 메모리 시스템은 어느 시점에서이를 폐기합니다. 그런 다음 self.segmentOutlet을 시도하면 반환 값은 nil입니다. selectSegmentIndex을 호출 한 후 오류가 발생하고 기본적으로 nil이 반환되고 결국 'null'이됩니다. 시도해보십시오 :

@property (strong, nonatomic) IBOutlet UISegmentedControl *segmentOutlet; 
+0

답변 해 주셔서 감사합니다. 나는 부동산을 약세에서 강세로 바 꾸었습니다. 문제는 여전히 남아 있습니다. 행운을 빌어 요 : ( –

+0

'self'와'self.segmentOutlet' 등을보기 위해 디버깅 코드를 추가하십시오. 또는 디버거에서 이들 값을 확인하십시오. 어떤 점에서 nil/null입니다. [CoreData로 시작하는 것은 꽤 용감하다!] – GoZoner

+0

나는 디버깅을 시도하지 않았으므로 그렇게 할 것입니다. 예, CoreData는 쉽지는 않지만 코딩을 시작한 이래 천천히 다루어 왔습니다. 따라서 CoreData로 와이어 세그먼트 컨트롤에 대한 생각은 이보다 더 쉬울 것 –

관련 문제