Ios 核心数据-can';不先插入就无法获取
我已经将数据模型和核心数据添加到我现有的项目中,我可以成功地编写对象并保存它们/插入,但我不能只获取数据库中的内容。我做错了什么?还是我误解了核心数据的工作原理 我可以插入一个对象,然后使用下面的代码获得所需的结果-但是如果不先使用insert,我无法检索对象。我想存储一个“令牌”,以便应用程序记住它Ios 核心数据-can';不先插入就无法获取,ios,swift,core-data,swift3,Ios,Swift,Core Data,Swift3,我已经将数据模型和核心数据添加到我现有的项目中,我可以成功地编写对象并保存它们/插入,但我不能只获取数据库中的内容。我做错了什么?还是我误解了核心数据的工作原理 我可以插入一个对象,然后使用下面的代码获得所需的结果-但是如果不先使用insert,我无法检索对象。我想存储一个“令牌”,以便应用程序记住它 let dc = DataController() let moc = dc.managedObjectContext let fetchRequest = NSFetchRequest<
let dc = DataController()
let moc = dc.managedObjectContext
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Token")
//fetchRequest.returnsObjectsAsFaults = false
do {
let entities = try moc.fetch(fetchRequest) as! [NSManagedObject]
print(entities.count) // prints 0
print(entities) // prints []
for entity in entities {
print(entities.count) // these dont work because of 0 results
print(entity) // these dont work because of 0 results
}
} catch {
print("could not fetch")
}
我已经打开了sqlite文件,之前插入的对象也存在于此。您可以这样做来检索数据
func retriveSaveData(){
let request:NSFetchRequest<TestData> = TestData.fetchRequest()
do {
let data = try managedObjectcontext.fetch(request) as [TestData]
if let str = data.first?.name{
// Your retrieve data
print(str)
}
}catch{
let error = error as NSError
print("\(error)")
}
}
func retrieveSaveData(){
let请求:NSFetchRequest=TestData.fetchRequest()
做{
let data=try managedObjectcontext.fetch(请求)为[TestData]
如果让str=data.first?.name{
//您可以检索数据
打印(str)
}
}抓住{
let error=错误为N错误
打印(“\(错误)”)
}
}
用于保存和更新数据
func saveToDataBase(data:[TestData]){
for data1 in data{
let request:NSFetchRequest<TestData> = TestData.fetchRequest()
do {
let count = try managedObjectcontext.count(for: request)
if count == 0 {
// save data according to your requirement.
print(data1)
}else{
//if anything you want to update then wright here
}
}catch{
let error = error as NSError
print("\(error)")
}
}
}
func saveToDataBase(数据:[TestData]){
对于数据中的数据1{
let请求:NSFetchRequest=TestData.fetchRequest()
做{
let count=try managedObjectcontext.count(for:request)
如果计数=0{
//根据您的要求保存数据。
打印(数据1)
}否则{
//如果您想更新任何内容,请点击此处
}
}抓住{
let error=错误为N错误
打印(“\(错误)”)
}
}
}
希望它能帮助您因为您知道要在持久性存储中搜索的实体,请确保NSFetchRequest(现在在Swift 3中是通用的)是一个令牌对象:
let fetchRequest = NSFetchRequest<Token>(entityName: "Token")
为什么您认为可以从空数据库中获取数据?此外,我还添加了更新和保存数据。
let fetchRequest = NSFetchRequest<Token>(entityName: "Token")
let entities = try moc.fetch(fetchRequest) as! Token