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

How to store UIButton value in core data?

如何在核心中存储 UIButton 值 data.I 有两个按钮分别命名为 BloodGroup 和 city。 当用户点击任何按钮时 pickerview 出现在底部并且有取消和完成 button.So 用户 select 值来自 UIPickerview 然后点击完成按钮然后 UIPickerview消失并且该值显示在 UIButton.

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

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

2) 谁能告诉我如何将数据从按钮中的 selected 字段传递到 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.
    }


}

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

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

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