我首先要说的是我刚接触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,我不知道为什么它在那里。所以我想要的是在TableView的同一行上有“Godis”和“111”,并删除其中的“0”。 “0”甚至不应该在那里。