1

我认为这个问题将是一个简单的问题,但它提供了一些更难和令人沮丧。

我正在使用 UISegmentedControl 进行选择,然后使用 NSNumber 实体保存到核心数据。不幸的是,当我尝试将段控件中的整数转换为 NSNumber 时,它出现(空)。下面是我的问题的示例代码。

//  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),所以我不确定如何正确。

我才刚刚开始学习编程,所以这可能是一个基本的菜鸟错误。谢谢你的帮助

4

1 回答 1

0

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

@property (strong, nonatomic) IBOutlet UISegmentedControl *segmentOutlet;
于 2013-04-06T02:18:12.947 回答