【发布时间】:2015-01-03 23:47:34
【问题描述】:
所以我正在尝试使用 Core Data 创建一个 TableViewCell,但是在定义单元格时,它们都在 Core Data 处输入最后一个输入。该应用程序将用户文本字段输入转换为表格视图单元格标签,并将 zipInStr 转换为 TableViewCell 详细信息。
这是将值添加到 CoreData 的函数:
@IBAction func createFav(sender: AnyObject) {
//Defining variables to save at core data
var newTextInput = textInput.text
var trimmNewTextInput = newTextInput.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
var zipInStr: String = zipCode.text!
var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var newFav = NSEntityDescription.insertNewObjectForEntityForName("Cells", inManagedObjectContext: context) as NSManagedObject
newFav.setValue(zipInStr, forKey: "favsDictKey")
newFav.setValue(trimmNewTextInput, forKey: "favsDictValues")
context.save(nil)
println(newFav)
textInput.text = String()
}
}
这是创建 TableViewCells 的函数:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
var context:NSManagedObjectContext = appDel.managedObjectContext!
var request = NSFetchRequest(entityName: "Cells")
request.returnsObjectsAsFaults = false
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
var results: NSArray = context.executeFetchRequest(request, error: nil)!
println(results)
if (results.count == 0){
println("Error")
} else {
for res in results{
cell.textLabel?.text = res.valueForKey("favsDictValues") as? String
cell.detailTextLabel?.text = res.valueForKey("favsDictKey") as? String
}
}
return cell
}
我很确定错误与循环有关,因为当我打印 results 时,我可以看到所有输入及其各自的值
【问题讨论】:
-
您应该执行该获取请求,并填充
results,仅一次,可能在viewDidLoad中。然后在cellForRowAtIndexPath中使用indexPath.row作为索引来访问results数组中的相关项。或者看看 NSFetchResultsController ,它(带有一些样板代码)使得将 CoreData 映射到 tableView 非常简单。 -
你能告诉我怎么做你说的第一种方法吗?我对 Core Data 真的很陌生,我真的很迷茫
-
使用 NSFetchedResultsController:developer.apple.com/library/ios/documentation/CoreData/…
-
实际上我不确定我是否理解你的问题......“错误”是指这一行正在打印的事实 - “println(“Error”)”?还是您实际上遇到了错误?
-
这个错误行没有给我错误只是让我知道没有指定单元格
标签: ios xcode uitableview core-data swift