【发布时间】:2016-04-10 12:27:50
【问题描述】:
首先我想说我是 iOS 编程的新手,所以我提前为这个可能是个坏问题的问题道歉。所以我有一个 UITableView 和我的单元格的自定义类。在这个单元格中,我有两个标签,一个代表一个字符串数组,一个代表一个整数数组。当谈到 CoreData 时,我完全迷失了,但我尝试了一些代码,它似乎工作,唯一的问题是标签显示在 tableView 中的不同行。看看这张图片,你会希望明白: My tableView
所以我想要的是“Godis”标签与“111”标签位于同一行。我不知道为什么那里有一个“0”,我什至没有将它添加到我之前提到的整数数组中。
这是 tableView 的类:
class tableViewController: UITableViewController {
var listItems = [NSManagedObject]()
var prisItems = [NSManagedObject]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "MinEntity")
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
listItems = results as! [NSManagedObject]
}
catch {
print("error")
}
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
prisItems = results as! [NSManagedObject]
}
catch {
print("error")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewDidAppear(animated: Bool) {
tableView.reloadData()
}
override func viewWillAppear(animated: Bool) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let fetchRequest = NSFetchRequest(entityName: "MinEntity")
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
listItems = results as! [NSManagedObject]
}
catch {
print("error")
}
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
prisItems = results as! [NSManagedObject]
}
catch {
print("error")
}
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return listItems.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as? CDCell
cell!.itemListLabel.text = listItems[indexPath.row].valueForKey("item") as? String
cell?.prisListLabel.text = String(prisItems[indexPath.row].valueForKey("intItem")!)
return cell!
}
这是我用来通过按下按钮将项目添加到 tableView 的代码(这是在另一个文件和类中):
@IBAction func addGodis(sender: AnyObject) {
saveItem("Godis", itemToSave2: 111)
print(listItems)
print(prisItems)
}
@IBAction func addMat(sender: AnyObject) {
saveItem("Mat", itemToSave2: 222)
print(listItems)
print(prisItems)
}
override func viewDidLoad() {
}
func saveItem(itemToSave : String, itemToSave2 : Int) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
let managedContext = appDelegate.managedObjectContext
let entity = NSEntityDescription.entityForName("MinEntity", inManagedObjectContext: managedContext)
let item = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
item.setValue(itemToSave, forKey: "item")
do {
try managedContext.save()
listItems.insert(item, atIndex: 0)
}
catch{
print("error")
}
let item2 = NSManagedObject(entity: entity!, insertIntoManagedObjectContext: managedContext)
item2.setValue(itemToSave2, forKey: "intItem")
do {
try managedContext.save()
prisItems.insert(item2, atIndex: 0)
}
catch {
print("error")
}
}
我之前也提到过,我有一个用于 UITableViewCell 的自定义类,但是,我的标签中只有 IBOutlets,因此其中没有其他代码。
只是为了更清楚我真正想要什么: 如果您查看我链接的图像,您会发现“Godis”和“111”不在同一行。相反,那里有一个 0,我不知道它为什么在那里。所以我想要的是将“Godis”和“111”放在 tableView 的同一行,并删除其中的“0”。 “0”甚至不应该在那里。
【问题讨论】:
标签: swift uitableview core-data swift2 xcode7