【发布时间】:2015-12-29 13:57:55
【问题描述】:
在我的应用程序中,我使用 Core Data 来保存有关用户的一些基本信息并轻松获取数据,我创建了一个 Assistant 类,该类具有一些静态函数。其中之一是:
static func fetchData(forEntity name: String) -> AnyObject{
var result: AnyObject!
let dataController = DataController().managedObjectContext
let fetchRequest = NSFetchRequest(entityName: name)
do{
result = try dataController.executeFetchRequest(fetchRequest)
}catch{
print("Failed to execute fetch request for \(name) entity")
}
print("Returning result: \(result.description)")
return result
}
问题是当我使用它时print("Returning result: \(result.description)") 打印“返回结果:()”并且它不是零,它只是一个空的AnyObject 我假设。无论如何,如果我在这种方法中使用它:
static func getName() -> String{
let fetched = fetchData(forEntity: "UserData") as! [UserData]
if fetched.count > 0{
print("Returning found value: \(fetched.first!.username!)")
return fetched.first!.username!
}else{
print("Did not find any data, returning an empty string")
return ""
}
}
它返回一个空字符串。但是,如果我在另一个类中使用以下方法:
func initialize(){
do{
let fetch = NSFetchRequest(entityName: "UserData")
let entities = try dataController.executeFetchRequest(fetch) as! [UserData]
if entities.count > 0{
dispatch_async(dispatch_get_main_queue(), {self.fld_name.text = entities[0].username})
}else{
dispatch_async(dispatch_get_main_queue(), {self.fld_name.text = ""})
}
}catch{
print("Nope, nothing's here")
}
}
它运行良好,数据被正确读取。
这里是你需要知道的:我在AppDelegate的application(application:, didFinishLaunchingWithOptions launchOptions:)方法中使用了getName()方法。所以可能是 CoreData 在那一刻不能正常工作(我严重怀疑)
好的,这是我的假设:
- 是否会因为返回
AnyObject而出现此问题,因此我会丢失所有数据? - 可能是因为此时 CoreData 尚未(不知何故)激活?
- 这只是我犯的另一个愚蠢的错误吗?
请提出您的解决方案。提前谢谢!
【问题讨论】:
标签: ios database swift core-data appdelegate