如何传递选择器的值来选择我的实体
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]];
【讨论】:
以上是关于如何传递选择器的值来选择我的实体的主要内容,如果未能解决你的问题,请参考以下文章