0

这让我发疯了。

我的核心数据模型中有一个名为“cardType”的字段,它被定义为 int16_t。

我希望它保留定义为 int 的 UISegmentedControl.selectedSegmentIndex 的设置。这个特殊的 UISegmentedControl 设置为 4 个段,所以 int16_t 是多余的。

如果我尝试设置

segmentedControl.selectedSegmentIndex = [dataTable cardType]; 

我收到一个错误“从'int16_t *'(又名'short *')分配给'NSInteger'(又名'int')的整数转换指针不兼容”

为了好玩,我在方法返回前放了一个星号,即。*[dataTable cardType],但这显然不起作用。我还做了一个 (int *)dataTable.cardType,但这也是一个愚蠢的尝试。编译器喜欢它,但运行时到处乱扔。

我还尝试了一些多步代码,我试图将值移动到一系列 NSNumber 和 NSInteger 操作中,但这些都不起作用。

我刚刚想到的另一个想法是将数据类型转换为 NSString 并使用字符串函数在文本和整数之间进行转换,但这似乎不太优雅。

看起来这应该是一件非常简单的事情,我只是太麻木了,找不到它。

4

1 回答 1

0

Core Data 为@property 自动生成了一个指向 int 的指针,而不是一个普通的 int。

我变了:

@property (nonatomic) int16_t *cardType;

@property (nonatomic) int16_t cardType;

现在一切都按照我想要的方式进行。即,

保存分段控件

[dataTable setCardType:[cardTypePicker selectedSegmentIndex]];

设置分段控制

cardTypePicker.selectedSegmentIndex = [dataTable cardType];

我不知道这是否是 Xcode 错误。

于 2013-09-27T21:37:32.647 回答