如何传递选择器的值来选择我的实体

Posted

技术标签:

【中文标题】如何传递选择器的值来选择我的实体【英文标题】:How can I pass the value of picker to select my Entity 【发布时间】:2014-06-01 08:00:56 【问题描述】:

我只是通过创建费用跟踪器应用来学习核心数据。我有 2 个实体,类别和交易。类别可以容纳许多交易,并且模型创建正确。

我有一个选择器为我的 AddTransactionViewController 选择类别。当按下保存按钮时,我使用以下代码保存我的交易

 _savedTransaction.type = [_pickerCategories objectAtIndex:[_picker selectedRowInComponent:0]];
 _savedTransaction.timestamp = [NSDate date];
 _savedTransaction.amount = transactionAmount.text
 _savedTransaction.category = _transactionCategory;

我确信我的 Save 是在做一些愚蠢的事情,因为当我记录它时,_savedTransaction.category 正在返回 null。其他参数正确记录,所以事务被保存... 如何从选择器设置的值中存储 transactionCategory?

【问题讨论】:

什么是_transactionCategory _transactionCategory 是 Category 类型的属性(我的实体类) 这就是我要问的。它是 int、double、float、varchar。它是什么类型的? 它是 NSManaged Object 子类,它有 2 个属性:name 和 displayOrder - 一个字符串和一个数字 好的,你的_savedTransaction.category属性是什么? 【参考方案1】:

您必须将选择器视图的值传递给您的类别

_savedTransaction.category = [_pickerCategories objectAtIndex:[_picker selectedRowInComponent:0]];

【讨论】:

我试过了...我收到一个错误,我将 NSString 类型的对象传递给 Category 类型 只需在CoreData中将类别设为字符串类型即可。我相信您使用的是字符串形式的类别。 category 是我的 2 个实体之间的关系,抱歉我应该更清楚 为什么要把NSManagedObject保存在CoreData 感谢您的回复。我的问题解决了。在这里找到我的答案:***.com/questions/19217058/…【参考方案2】:

打开您的.xcdatamodeld 文件,单击您的savedTransaction 实体并将其category 属性类型更改为NSString。修改 CoreData 后,您必须从设备/模拟器中删除现有应用程序并再次运行/安装它。然后只需使用以下逻辑

_savedTransaction.category = [_pickerCategories objectAtIndex:[_picker selectedRowInComponent:0]];

并且应该将您的类别保存为字符串。 如果您希望仅将类别的索引而不是名称保存为字符串,您还可以将类别属性类型更改为 integer 16。在这种情况下,只需将其另存为

_savedTransaction.category = [NSNumber numberWithInt:[_picker selectedRowInComponent:0]];

【讨论】:

以上是关于如何传递选择器的值来选择我的实体的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用在选择器中选择的索引值而不是选择器的值

MYSQL如何根据变量的值来选择字段进行查询

vuejs在选择后获取日期选择器的值

设置日期选择器的值?

如何增加jquery选择器的值

如何在单击或更改时获取 $(this) 选择器的值