我在检索名为" totalWorkTimeInHoursString"的属性时遇到问题。并在UILabel中将其设置为文本。现在我有:
override func viewDidLoad() {
super.viewDidLoad()
func calculateTotalWorkTimeInHoursStringSum() {
//CoreData
let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let managedContext : NSManagedObjectContext = appDelegate.managedObjectContext!
var fetchRequest = NSFetchRequest(entityName: "Log")
fetchRequest.returnsObjectsAsFaults = false;
var results: NSArray = managedContext.executeFetchRequest(fetchRequest, error: nil)!
if (results.count > 0) {
for res in results {
var totalWorkTimeInHoursString = results.valueForKey("totalWorkTimeInHoursString") as String
totalWorkTimeInHoursStringSumLabel.text = "\(totalWorkTimeInHoursString)"
}
}else {
println("zero results returned, potential error")
}
}
}
这是标签所在的tableView单元格。
任何人都可以告诉我这里可能做错了什么。当我运行应用程序时,除了默认文本之外,它在UILabel中没有显示任何内容。我知道" totalWorkTimeInHoursString"正在保存到核心数据,因为它是在项目的其他地方的tableview中存储和检索的。
答案 0 :(得分:0)
在以下循环中,您将访问结果数组的各个元素,即res
s,但在循环内,当您应该使用results
时res
1}}因此你最终试图操纵results
,就像它是字典而不是数组。因此,简而言之,将results.valueForKey
替换为res.valueForKey
:
for res in results {
var totalWorkTimeInHoursString = res.valueForKey("totalWorkTimeInHoursString") as String
totalWorkTimeInHoursStringSumLabel.text = "\(totalWorkTimeInHoursString)"
}