【发布时间】:2015-04-05 10:22:12
【问题描述】:
我试图在我的 UITableViewController 中使用 Realm,如果我将对象转换为它的类,每当我尝试在行索引处查找对象时都会遇到问题(如果我使用了错误的术语,请原谅我,我对 Swift、Realm 和 iOS 开发者还是很陌生!)...
我有一个看起来像这样的Site 类,并且数据库有几千个条目:
class Site: RLMObject {
var id: String = ""
var name: String = ""
}
在我的表格视图控制器中,当我尝试根据结果集中的索引获取Site 以加载到单元格中时,如果我尝试将其转换为Site 对象,它总是为零!如果我让它使用AnyObject 设置,那么我可以看到确实找到了该索引处的正确站点。
我猜测AnyObject 上的.name 调用只是因为AnyObject 响应.name 而起作用,但它帮助我看到索引是正确的并且该站点确实存在...
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
let allSites = Site.allObjects()
var any: AnyObject = allSites.objectAtIndex(UInt(indexPath.row))
var site = allSites.objectAtIndex(UInt(indexPath.row)) as? Site
println("With AnyObject: \(any.name)")
println("With casting: \(site?.name)")
return cell
}
上面打印语句的结果如下所示(例如在名为“Addeboda”的网站上):
With AnyObject: Addeboda
With casting: Optional("")
我做错了吗?我用谷歌搜索了一下,我能找到的所有类似的教程和答案都表明results.objectAtIndex(index) as Class 应该是正确的方法。
【问题讨论】: