gpt4 book ai didi

ios - 无法使用核心数据 (Swift) 将数据保存/检索到设备

转载 作者:行者123 更新时间:2023-11-29 01:55:12 25 4
gpt4 key购买 nike

我是iOS开发新手,一直在学习核心数据。我有一个模式窗口来保存数据和一个 UITableView 来显示它。这是我保存数据所做的事情,我没有错误,但我并不是没有检索任何数据。

let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext

let entity = NSEntityDescription.entityForName("Name", inManagedObjectContext: moc!)


@IBAction func saveName(sender: AnyObject) {

//Create the managed object to be inserted

let name = Name(entity: entity!, insertIntoManagedObjectContext: moc!)

name.title = nameTitle.text
name.details = nameDetails.text
name.date = nameDate.date

var error = NSError?()

moc?.save(&error)

//End

if let problem = error {
let a = UIAlertView(title: "Sorry..", message: "a problem occurred", delegate: nil, cancelButtonTitle: "Ok")
} else {
//DismissWindow
self.dismissViewControllerAnimated(true, completion: {});
}

}

这是我对 TableView 的提取请求。

@IBOutlet weak var UITable: UITableView!

let moc = (UIApplication.sharedApplication().delegate as! AppDelegate).managedObjectContext
var names = [Name]()


override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
dismissViewControllerAnimated(true, completion: nil)
}


override func viewWillAppear(animated: Bool) {
var error: NSError?

let request = NSFetchRequest(entityName: "Name")

let names = moc?.executeFetchRequest(request, error: &error) as! [Name]

self.UITable.reloadData()

}


override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

func tableView(tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {

return names.count

}


func tableView(tableView: UITableView,
cellForRowAtIndexPath
indexPath: NSIndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell

let name = names[indexPath.row]

cell.textLabel?.text = name.title

return cell
}

最佳答案

您似乎没有使用 UITableViewController 而是实现了您自己的 TableView 。您需要确保您还声明了您实现了 UITableViewDelegateUITableViewDataSource 协议(protocol),否则数据将不会显示。

此外,在获取数据时,您在names 数组前加上关键字let。这会将它转换为 viewWillAppear 方法中的局部变量。当这个方法退出时,它会立即被遗忘。相反,您想使用已声明的变量 names

self.names = ...

关于ios - 无法使用核心数据 (Swift) 将数据保存/检索到设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30947939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com