【发布时间】:2015-10-01 14:20:23
【问题描述】:
这是我从 CoreData 过滤数据的代码,它提供了更正的数据,但如果我查看记录的详细信息,它会给我错误的数据。
意思是我有详细的 VC,可以显示更大的相机图像。因此,如果索引是过滤器数据的 1,但索引 1 中相机的实际索引在 CoreData 中实际上是 20。我该如何纠正这个问题?
func fetch() {
let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
// Ref data
let context: NSManagedObjectContext = appDel.managedObjectContext!
let freq = NSFetchRequest(entityName: "Cameras")
let predicate = NSPredicate(format: "locationname == %@", "lobby")
freq.predicate = predicate
let fetchResults = try! context.executeFetchRequest(freq) as? [NSManagedObject]
filteredData.removeAll(keepCapacity: false)
filteredData = fetchResults!
searchActive = true;
}
更新
请求更新信息。
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if searchActive {
return filteredData.count
} else {
return myData.count
}
}
下一项。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cameraCell", forIndexPath: indexPath) as! camerasTableViewCell
if searchActive {
let data = filteredData[indexPath.row]
cell.nameLabel.text = data.valueForKey("name") as? String
cell.roadName.text = data.valueForKey("locationname") as? String
let CamImage = data.valueForKey("dImage") as! NSData
let CameraImage: UIImage = UIImage(data: CamImage)!
cell.imageUrl?.image = CameraImage
} else {
let data = myData[indexPath.row]
cell.nameLabel.text = data.valueForKey("name") as? String
cell.roadName.text = data.valueForKey("locationname") as? String
let CamImage = data.valueForKey("dImage") as! NSData
let CameraImage: UIImage = UIImage(data: CamImage)!
cell.imageUrl?.image = CameraImage
}
return cell
}
下一项
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let selectedIndexPath:NSIndexPath = self.tableView.indexPathForSelectedRow!
let vc = segue.destinationViewController as! largeCameraViewController
vc.row = selectedIndexPath.row
}
【问题讨论】:
-
请您发布您的表格视图数据源方法(特别是
numberOfRowsInSection和cellForRowAtIndexPath)以及向详细VC 展示/连接的代码。听起来您需要修改present/segue 代码以使用filteredData(如果searchActive 为true)来定位要传递的正确对象。
标签: ios uitableview core-data swift2