这让我疯了。
我的核心数据模型中有一个名为" 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并使用字符串函数在文本和整数之间进行转换,但这看起来并不优雅。
看起来这应该是非常简单的事情,而且我太麻木了,无法找到它。
答案 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错误。