无法使用核心数据保存分段控制

时间:2013-04-06 00:53:40

标签: xcode core-data uisegmentedcontrol

我认为这个问题很容易解决,但它提供了一些更难和令人沮丧的问题。

我正在使用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%@结果是(null),所以我不确定这是怎么回事。

我只是开始学习编程,所以这可能是一个基本的新手错误。 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

您的segmentOutlet需要指定为strong。内存系统在某些时候丢弃它;然后,当您尝试self.segmentOutlet时,返回值为nil。在调用selectSegmentIndex失败后,默认情况下会返回nil,最终会变为'null'。尝试:

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