我认为这个问题很容易解决,但它提供了一些更难和令人沮丧的问题。
我正在使用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),所以我不确定这是怎么回事。
我只是开始学习编程,所以这可能是一个基本的新手错误。 谢谢你的帮助
答案 0 :(得分:0)
您的segmentOutlet
需要指定为strong
。内存系统在某些时候丢弃它;然后,当您尝试self.segmentOutlet
时,返回值为nil
。在调用selectSegmentIndex
失败后,默认情况下会返回nil
,最终会变为'null'。尝试:
@property (strong, nonatomic) IBOutlet UISegmentedControl *segmentOutlet;