0

我是开发 iOS 应用程序的极端初学者,所以请放轻松 :)

我正在创建一个核心数据库,您可以在其中添加记录,然后使用 Swift 3 在 Xcode 上查看它们。我在存储/显示男性/女性的分段控件时遇到了一些问题。我可以让文本字段和标签正确显示,但由于某种原因无法正常工作。

FriendsViewController.swift

//
//  friendsViewController.swift
// 
//
//  Created by  on 11/10/17.
//  Copyright © 2017 . All rights reserved.
//

import UIKit
import CoreData

class friendsViewController: UIViewController {
    //OUTLETS
    @IBOutlet weak var firstName: UITextField!
    @IBOutlet weak var lastName: UITextField!
    @IBOutlet weak var genderSegControl: UISegmentedControl!
    @IBOutlet weak var ageStepper: UIStepper!

    //AGECOUNT
    @IBOutlet weak var ageLabel: UILabel!
    @IBOutlet weak var address: UITextField!

    var context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

    //actions
    @IBAction func ageStepperStep(_ sender: UIStepper) {
        let step = Int(sender.value) // using an integer variable
        ageLabel.text = String(step)
        // label1.text = Int(sender.value).description
        // another way without using any integer variable
    }

    //SAVE FRIEND BUTTON
    @IBAction func saveFriendBtn(_ sender: Any) {
        if firstName.text != "" && lastName.text != "" {
            var gender : String?
            if self.genderSegControl.selectedSegmentIndex == 0 {
                gender = "male"
            }
            else {
                gender = "female"
            }

            let newFriend = NSEntityDescription.insertNewObject(forEntityName: "Friends", into: context)
            newFriend.setValue(self.firstName.text, forKey: "firstName")
            newFriend.setValue(self.lastName.text, forKey: "lastName")
            newFriend.setValue(self.address.text, forKey: "address")
            newFriend.setValue(self.ageLabel.text, forKey: "age")
            newFriend.setValue(gender!, forKey: "gender")

            //SAVE THE CONTEXT
            do {
                try context.save()
            }
            catch{
                print(error)
            }
        }
        else {
            print("please enter your first and last name!")
        }
    }
} //end class

FriendslistViewController.swift(显示单元格中所有记录的屏幕)

//
//  friendslistViewController.swift
// 
//
//  Created by on 11/10/17.
//  Copyright © 2017. All rights reserved.
//

import UIKit
import CoreData

class friendslistViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    //outlets
    @IBOutlet weak var tableView: UITableView!

    var userArray:[Friends] = []

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.delegate = self
        tableView.dataSource = self

        self.fetchData()
        self.tableView.reloadData()
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return userArray.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        //save first users data into array
        let name = userArray[indexPath.row]
        cell.textLabel!.text = name.firstName! + " " + name.lastName! + " " + name.age! + " " +
            name.gender! + " " +
            name.address!

        return cell
    }

    func fetchData(){
        let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

        do{
            userArray = try context.fetch(Friends.fetchRequest())
        }
        catch{
            print(error)
        }
    }
} //end class
4

0 回答 0