【发布时间】:2016-04-29 10:07:58
【问题描述】:
我写了两个单独的函数fetchRecords 和displayRecords 写在Appdelegate 类中。 fetchRecords 函数将从实体中获取所有记录,它工作正常。displayRecords 函数接受来自fetchRecords 函数的返回值并一一打印所有记录。
我有一个视图控制器,它调用这两个函数来完成所需的任务。我的问题是displayRecords 中的result.count 显示获取的记录中可用的记录总数。在打印记录时,值为零。
override func viewDidLoad() {
super.viewDidLoad()
let fetchedRecords = AppDelegate().fetchRecords(fromEntity: "Dashboard")
AppDelegate().displayRecords(fromFetchedRecords: fetchedRecords)
}
这是用 AppDelegate 类编写的 fetchRecords 和 displayRecords 函数
func fetchRecords(fromEntity entity:String) -> Array<AnyObject> {
var fetchedResult:Array<AnyObject> = []
let fetchRequest = NSFetchRequest()
let entityDescription = NSEntityDescription.entityForName(entity, inManagedObjectContext: self.managedObjectContext)!
fetchRequest.entity = entityDescription
do{
fetchedResult = try self.managedObjectContext.executeFetchRequest(fetchRequest)
}catch{
let fetchError = error as NSError?
print(fetchError!)
}
return fetchedResult
}
func displayRecords(fromFetchedRecords result:Array<AnyObject>) {
print("Total records:\(result.count)")
if (result.count > 0) {
for data in result {
let dashboard = data as! NSManagedObject
print("Value: \(dashboard.valueForKey("count"))")
}
}
}
我也会分享数据插入代码。
func saveDashBoardData(dictionary: Dictionary<String, String>) {
print(NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask))
//Create Manage Object
let entityDescription: NSEntityDescription = NSEntityDescription.entityForName("Dashboard", inManagedObjectContext: self.managedObjectContext)!
for data in dictionary {
let dashboardObject = Dashboard(entity: entityDescription,insertIntoManagedObjectContext: self.managedObjectContext)
dashboardObject.type = data.0
dashboardObject.count = data.1
do {
try self.managedObjectContext.save()
print("Data saved succesfully")
}
catch {
print(error)
}
}
}
【问题讨论】:
-
你能告诉我你项目中的核心数据模型吗@sindhu ja
-
我已经分享了问题中的数据模型。请找到它
-
我听不懂你想说什么@vadian
-
@sindhu ja:你能在 let dashboard = data as 处设置一个断点吗! NSManagedObject 并确认仪表板对象是否为零?我想它不会是,如果它是 nil,它本身就会崩溃。这意味着您的获取请求正在正确地感染仪表板对象,但可能是仪表板对象在计数中没有属性值:) 所以您可以做的是发布将仪表板对象插入核心数据的代码
-
@SandeepBhandari 插入工作正常,我可以看到数据库中的数据。无论如何我会分享代码。
标签: ios core-data nsfetchrequest swift2.2