如何将int16_t Core Data对象转换为int变量(并返回)?

时间:2013-09-27 19:20:12

标签: objective-c core-data uisegmentedcontrol

这让我疯了。

我的核心数据模型中有一个名为" cardType"它定义为int16_t。

我希望它保存UISegmentedControl.selectedSegmentIndex的设置,该设置被定义为int。这个特定的UISegmentedControl设置为4个段,因此int16_t是过度的。

如果我尝试设置

segmentedControl.selectedSegmentIndex = [dataTable cardType]; 

我收到错误"指向整数转换的指针不兼容分配给' NSInteger' (又名' int')来自' int16_t *' (又名'短*')"

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

我还尝试了一些多步骤代码,我尝试将该值移动到一系列NSNumber和NSInteger操作中,但这些都没有。

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

看起来这应该是非常简单的事情,而且我太麻木了,无法找到它。

1 个答案:

答案 0 :(得分:0)

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

我改变了:

@property (nonatomic) int16_t *cardType;

@property (nonatomic) int16_t cardType;

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

保存segmentedControl

[dataTable setCardType:[cardTypePicker selectedSegmentIndex]];

设置segmentedControl

cardTypePicker.selectedSegmentIndex = [dataTable cardType];

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