Realm 復習　簡単App

#今回の内容
<img width="150" alt="1829E660-216C-4B1A-A79E-05A231F83F22_1_201_a.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1466343/c90aa5cb-3128-7150-6e5d-3000f149ae41.jpeg">


#機能説明
* 2つのtextfieldから値を取得して、Realmにデータとして保存します。
* その後、Realmから保存済みの値を全てTableViewのCellに表示しています。 


#コードと簡単解説

* Main.storyboardでViewControllerにTabelViewを作成 

##Realm
* Podfileには、pod 'RealmSwift'を入力

```言語:Podfile
 pod 'RealmSwift'
```

* 値の保存先を作成

```Swift:RealmDataModel
import RealmSwift

class RealmDataModel:Object{
    
    @objc dynamic var realmDataOne = String()
    @objc dynamic var realmDataTwo = String()
    
}
```

* Realmに値を保存するための、関数を作成します。
* Realmから保存済みの値を取得する関数を作成します。

```Swift:RealmCRUDGroup
import RealmSwift

class RealmCRUDGroup{
    
    static var resultRealmArray:[[String:String]] = []
    
}

extension RealmCRUDGroup{
    
    static func createRealm(createDataOne:String,createDataTwo:String){
        
        do{
            let realm = try Realm()
            let realmDataModel = RealmDataModel()
            realmDataModel.realmDataOne = createDataOne
            realmDataModel.realmDataTwo = createDataTwo
            
            try realm.write({
                
                realm.add(realmDataModel)
            })    
        }catch{
            
            //エラー処理など
        }   
    }   
}

extension RealmCRUDGroup{
    
    static func readAllRealm(){
        
        do{
            let realm = try Realm()
            resultRealmArray = []
            
            for result in realm.objects(RealmDataModel.self){
                
                self.resultRealmArray.append(["OneData":result.realmDataOne,"TwoData":result.realmDataTwo])
            }
        }catch{
             //エラー処理など
        }
    }
}
```

##ViewController

```Swift:ViewController
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var addView: UIView!
    @IBOutlet weak var upTextField: UITextField!
    @IBOutlet weak var underTextField: UITextField!
    @IBOutlet weak var addButtton: UIButton!
    @IBOutlet weak var tableView: UITableView!
        
    override func viewDidLoad() {
        super.viewDidLoad()
     
        tableView.dataSource = self
        
        let gradient = CAGradientLayer()
        gradient.frame = CGRect(x: view.frame.minX, y: view.frame.minY, width: view.frame.size.width, height: view.frame.size.height)
        gradient.colors = [UIColor.systemIndigo.cgColor,UIColor.white.cgColor]
        gradient.startPoint = CGPoint(x: 0.5, y: 0.5)
        gradient.endPoint = CGPoint(x: 0.5, y: 0)
        view.layer.insertSublayer(gradient, at: 0)
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        
        DesignGroup.targetDesign(targetView: addView, targetButton: addButtton, targetTableView: tableView)
    }

    @IBAction func add(_ sender: Any) {
        
        RealmCRUDGroup.createRealm(createDataOne: upTextField.text!, createDataTwo: underTextField.text!)
        
        if RealmCRUDGroup.resultRealmArray.count >= 0{

            RealmCRUDGroup.readAllRealm()
            tableView.reloadData()
        }
        
    }
}

extension ViewController:UITableViewDataSource{
    
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        
        return tableView.frame.height / 7
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        RealmCRUDGroup.resultRealmArray.count
        
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
        
        let cellLeftLabel = cell.contentView.viewWithTag(1) as! UILabel
        let cellRightLabel = cell.contentView.viewWithTag(2) as! UILabel
        
        cellLeftLabel.text = RealmCRUDGroup.resultRealmArray[indexPath.row]["OneData"]
        cellRightLabel.text = RealmCRUDGroup.resultRealmArray[indexPath.row]["TwoData"]
        
        cell.layer.cornerRadius = 15.0
        cell.layer.borderWidth = 1.0
        cell.layer.borderColor = UIColor.systemIndigo.cgColor
        return cell
    }   
}
```

```Swift:
import Foundation
import UIKit

class DesignGroup{
    
    static func targetDesign(targetView:UIView,targetButton:UIButton,targetTableView:UITableView){
        
        targetView.layer.cornerRadius = 15.0
        targetView.layer.shadowOffset = CGSize(width: 4, height: 4)
        targetView.layer.shadowRadius = 15.0
        targetView.layer.shadowOpacity = 0.8
        
        targetButton.layer.cornerRadius = 10.0
        
        targetTableView.layer.cornerRadius = 15.0
    }    
}
```

#終わり
ご指摘、ご質問などありましたら、コメントまでお願い致します。