如何将 UIButton 值存储在核心数据中?

Posted

技术标签:

【中文标题】如何将 UIButton 值存储在核心数据中?【英文标题】:How to store UIButton value in core data? 【发布时间】:2015-10-03 13:07:30 【问题描述】:

如何在核心数据中存储UIButton 值。我有两个按钮,分别命名为 BloodGroup 和城市。 当用户点击任何按钮然后pickerview 出现在底部并且有取消和完成按钮。所以用户从UIPickerview 中选择值并点击完成按钮然后UIPickerview 消失并且该值显示在UIButton

需要回答两个问题。 我想将此值存储在核心数据中。 1)我们如何存储这个值?

第二个选项是如果我们可以将这个值存储在 uitextfield 中,那么这很容易。

2) 谁能告诉我如何将按钮中选定字段的数据传递给UITextField

import UIKit

class Bloodbank: UIViewController 


    @IBOutlet weak var Bloodgroup: UIButton!

    @IBOutlet weak var City: UIButton!


    @IBOutlet weak var pickerViewObj: UIPickerView!


    @IBOutlet weak var subViewObj: UIView!



    let fruitsArrayValues = ["A+","A-","B+","B-","AB+","AB-","O+","O-"]
    let iPhoneModelArrayValues = ["Ahmedabad","Gandhinagar","Surat","Rajkot","Vadodara"]

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        subViewObj.hidden = true
    

    //delegate methods.
    func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int 
        return 1
    

    func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int 
        //dynamic delegate methods using pickerviewObj.tag
        if pickerViewObj.tag == 0 
            return fruitsArrayValues.count
        
        else 
            return iPhoneModelArrayValues.count
        
    

    func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String! 
        if pickerViewObj.tag == 0 
            return "\(fruitsArrayValues[row])" //its displyed to titleForRow.
        
        else 
            return "\(iPhoneModelArrayValues[row])"
        
    

    func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) 
        //valuesLbl.text = pickerDataValues[row]
    


    @IBAction func selectItemsBtn(sender: AnyObject) 

        //first they set the tag in pickerviewObj.
        subViewObj.hidden = false
        switch sender.tag 
        case 0:
            pickerViewObj.tag = 0
        case 1:
            pickerViewObj.tag = 1
        default:
            break;
        
        pickerViewObj.reloadAllComponents()
    



    @IBAction func cancelBtn(sender: AnyObject) 
    subViewObj.hidden = true
    


    @IBAction func DoneBtn(sender: AnyObject) 

        if pickerViewObj.tag == 0 
            let selectedIndex = pickerViewObj.selectedRowInComponent(0)
            Bloodgroup.setTitle(fruitsArrayValues[selectedIndex], forState: UIControlState.Normal)
        
        else if pickerViewObj.tag == 1 
            let selectedIndex = pickerViewObj.selectedRowInComponent(0)
            City.setTitle(iPhoneModelArrayValues[selectedIndex], forState: UIControlState.Normal)
        
        subViewObj.hidden = true

    
    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    



【问题讨论】:

【参考方案1】:

正如我所见,所选值只是一个字符串。您可以将字符串存储在核心数据中。

对于第二个问题:可以用当前的title方法获取按钮的title的值。见:https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIButton_Class/#//apple_ref/occ/instp/UIButton/currentTitle

顺便说一句,您是否考虑过使用 NSUserDefaults 来存储此值?这对你来说可能更容易。

【讨论】:

感谢您的回复先生,1)正如您所说,选择的值是字符串,所以在核心数据中保存血型和城市值,我应该从出口和操作中添加哪些内容作为核心数据属性。 . 2)我们是否应该将按钮值从 currenttitle 方法传递给第二个 textfeild.. 谢谢先生.. 等待您的宝贵回复.. 我猜您需要一个具有两个字符串属性、血型和城市的实体。但是 coredata 对于这个项目可能太难了,或者你的技能水平,userdefaults 就像这样简单:NSUserDefaults.standardUserDefaults().setObject(button.currentTitle, forKey: "bloodType"), and let storedBloodType = NSUserDefaults.standardUserDefaults( ).stringForKey("血型")。我不明白你的第二个问题。我看不到文本字段。 想象有一个名为“textfielddemo”的文本字段。因此,当用户选择值表单选择器视图时,它会出现在 textfielddemo 中。如果发生这种情况,那么文本字段的值很容易输入到核心数据中。我想要核心数据,因为在输入详细信息后,在 secondviewcontroller 中获取核心数据并使用它很有用。感谢 VIK 的回复,我再次等待您的回复。

以上是关于如何将 UIButton 值存储在核心数据中?的主要内容,如果未能解决你的问题,请参考以下文章

如何在核心数据关系真正改变之前观察它?

如何使用 WatchKit 更新 UI?

我应该如何在核心数据中存储从 UISlider 读取的百分比值?

如何创建登录条件和核心数据表值不能存储两次

如何使用 Interface Builder 在其他 UI 元素的背景中添加 UIButton?

UIDatePicker 仅在核心数据中存储时间