NSUserDefaults以表格形式保存并在数组中读取
问题描述:
好吧,所以我有用户输入一个名称到一个文本字段中,并且一个按钮将名称传递给另一个视图中的tableview,表视图列出了名称,但添加了新名称时它会覆盖以前的名称,而不是列出添加到tableview的所有名称。这里是我的代码:NSUserDefaults以表格形式保存并在数组中读取
viewcontroller1:
@IBAction FUNC addPlant(发件人:AnyObject){
let array = self.title
NSUserDefaults.standardUserDefaults().setObject(array, forKey: "userName")
NSUserDefaults.standardUserDefaults().synchronize()
}
viewcontroller2:
@IBOutlet弱VAR的tableView:UITableView的!
var userDefaults = NSUserDefaults.standardUserDefaults()
var ourText = String()
var textArray:[String] = [String]()
override func viewDidLoad() {
super.viewDidLoad()
//self.tableview.delegate = self
self.tableView.dataSource = self
ourText = userDefaults.stringForKey("userName")!
textArray.append(ourText)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return textArray.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
cell.textLabel?.text = textArray[indexPath.row]
return cell
}
答
您可以使用
textArray = NSUserDefaults.standardUserDefaults().arrayForKey("userName")
或者
textArray = NSUserDefaults.standardUserDefaults().objectForKey("userName")
+0
这将被放置在哪里?谢谢 – user4682589
+0
在viewDidLoad中它是正确的 – Ro22e0
我不知道你是问这里。如果您在设置nsuserdefaults后调用viewcontroller2的viewdidload,则基本上将它附加到一个空数组。在将其保存到userdefaults之前,在viewcontroller1中执行附加操作。 –
@NitinAlabur我想要的是将名称保存在一个视图控制器中,并将它们加载到viewcontroller 2中,并将它们显示在表格视图中。我可以输入一个名称并显示,但我需要无限量的名称才能输入并显示为列表。 – user4682589
在每个步骤中放置日志语句,并查看每个步骤的调用位置。您的代码没有提供足够的上下文以了解何时呈现视图控制器。这些在两个标签?是vc1呈现/推送vc2? –