【发布时间】:2015-12-03 23:04:20
【问题描述】:
我正在学习 Swift 编程,我从一本有错误的书中获得了这个示例(已评论)。按下Add 按钮时,如何解决此问题并更新tableView?我已经阅读了许多解决方案,但似乎没有一个有效。此外,tableView 在我重新加载 simulator 时更新。我已经被困了两天了,这让我发疯了! :)
import UIKit
import CoreData
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var managedObjectContext: NSManagedObjectContext!
override func viewDidLoad() {
super.viewDidLoad()
let appDelegate: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
managedObjectContext = appDelegate.managedObjectContext! as NSManagedObjectContext
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func loadBooks() -> Array<AnyObject> {
var error: NSError? = nil
var fetchRequest = NSFetchRequest(entityName: "Book")
let result: [AnyObject] = managedObjectContext!.executeFetchRequest(fetchRequest, error:&error)!
return result
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return loadBooks().count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
var book: Book = loadBooks()[indexPath.row] as! Book
cell.textLabel!.text = book.title
return cell
}
@IBAction func addNew(sender: AnyObject) {
let entity = NSEntityDescription.entityForName("Book", inManagedObjectContext:managedObjectContext)
var book = Book(entity: entity!,insertIntoManagedObjectContext:managedObjectContext)
book.title = "My Book:" + String(loadBooks().count)
var error: NSError?
managedObjectContext.save(&error)
myTableView.reloadData() //mistake!
}
}
【问题讨论】:
-
myTableViewDeclared在哪里? -
@MikeAtNobel 不是。也许在书籍编辑过程中丢失了一些代码,这不是第一次。我应该在哪里以及如何声明
myTableView? -
@Kie 对如何声明
myTableView有一个很好的答案。但出于好奇,如果从未声明过myTableView,它是如何编译的? -
@MikeAtNobel 没有这一行:)
标签: swift tableview reloaddata