빠른 코딩 문제가 있습니다. 먼저, Xcode 8과 스위프트 2를 사용하고 있습니다. 여기에 내 viewcontroller의 빠른 이미지가 있으므로 더 나은 아이디어를 얻을 수 있습니다. Image of my viewcontrollerNSUserDefaults 및 UITableView의 지속성
위 이미지에서 목표 (텍스트 필드에 텍스트)를 삽입하고 제출을 누릅니다. 제출 버튼 ("Submit Goal")은 텍스트 필드의 텍스트를 배열에 삽입합니다. 그런 다음이 배열은 tableview에 표시됩니다.
내 질문은 배열을 저장하려면이 viewcontroller NSUserDefualts 어떻게 구현합니까? 또한 사용자가 tableview에서 목표 중 하나를 삭제하면 배열을 업데이트 할 수 있어야합니다.
이//
// VCWeeklyGoals.swift
// FitNote
//
// Created by ---- on 9/21/16.
// Copyright © 2016 Haiden Stiles. All rights reserved.
//
import UIKit
class VCWeeklyGoals: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate {
//MARK: Properties
//DATE AND TIME
@IBOutlet weak var labelDate: UILabel!
var timer = NSTimer()
@objc func tick() {
labelDate.text = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .MediumStyle, timeStyle: .MediumStyle)
}
//END DATE AND TIME
//BEGINNING ROUNDED BUTTONS FOR MONDAY THROUGH FRIDAY
//@IBOutlet weak var roundedButtonMonday: UIButton!
//ROUNDED BUTTON FOR SUBMIT GOAL
@IBOutlet weak var roundedButtonSubmitGoal: UIButton!
//END ROUNDED BUTTON FOR SUBMIT GOAL
//END ROUNDED BUTTONS FOR MONDAY THROUGH FRIDAY
//BEGINNING OF TABLE FUNCTIONS AND PROPERTIES
@IBOutlet var tableView: UITableView!
@IBOutlet var insertedGoal: UITextField!
//var tableTitles = NSUserDefaults.standardUserDefaults().arrayForKey("tableTitles") as! [String]
var tableTitles = [String]()
@IBAction func buttonSubmitGoal(sender: UIButton) {
self.view.endEditing(true)
var error = ""
if insertedGoal.text == "" {
error = "Please enter a goal!"
} else {
tableTitles.append(insertedGoal.text!)
self.tableView.reloadData()
}
if error != "" {
let alert = UIAlertController(title:"Error In Form", message: error, preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title:"OK", style: .Default, handler: { action in
//self.dismissViewControllerAnimated(true, completion:nil)
}))
self.presentViewController(alert, animated:true, completion:nil)
}
insertedGoal.text = ""
}
//func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// return 1
//}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return tableTitles.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell : UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as UITableViewCell
let object = tableTitles[indexPath.row]
cell.textLabel!.text = object
return cell
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == UITableViewCellEditingStyle.Delete {
tableTitles.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
}
}
//END OF TABLE FUNCTIONS AND PROPERTIES
//OVERRIDE FUNCTIONS
override func viewDidLoad() {
super.viewDidLoad()
if let temp = NSUserDefaults.standardUserDefaults().objectForKey("tableTitles") as? [String] {
tableTitles = temp
}
// Do any additional setup after loading the view.
//TABLE PROPERTIES
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
self.insertedGoal.delegate = self
tableView.delegate = self
tableView.dataSource = self
//END TABLE PROPERTIES
//DATE PROPERTIES
timer = NSTimer.scheduledTimerWithTimeInterval(1.0,
target: self,
selector: #selector(tick),
userInfo: nil,
repeats: true)
//END DATE PROPERTIES
//ROUNDED BUTTON FOR MONDAY THROUGH FRIDAY PROPERTIES
//MONDAY
//roundedButtonMonday.backgroundColor = UIColor.whiteColor()
//roundedButtonMonday.layer.cornerRadius = 6
//roundedButtonMonday.layer.borderWidth = 0.5
//roundedButtonMonday.layer.borderColor = UIColor.blueColor().CGColor
//ROUNDED BUTTON FOR SUBMIT GOAL
roundedButtonSubmitGoal.backgroundColor = UIColor.clearColor()
roundedButtonSubmitGoal.layer.cornerRadius = 7
roundedButtonSubmitGoal.layer.borderWidth = 1
roundedButtonSubmitGoal.layer.borderColor = UIColor.blueColor().CGColor
//END ROUNDED BUTTON FOR SUBMIT GOAL
//END ROUNDED BUTTON FOR MONDAY THROUGH FRIDAY PROPERTIES
//DATE PICKER
//END DATE PICKER
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
데이터를 저장하는'NSUserDefaults'를 사용하지 마십시오 도움이되기를 바랍니다 간단한 세포이다. 그것은 그 목적이 아닙니다. NSArray 메서드를 사용하여 배열을 파일에 씁니다. – rmaddy
NSArray를보고 있었지만 그걸로 아무런 진전을 보이지 않고있는 것 같았습니다 ... NSArray를 구현하는 올바른 방향으로 나를 조종 해 주시겠습니까? –