【问题标题】:Retrieve and access boolean from CoreData从 CoreData 检索和访问布尔值
【发布时间】:2017-01-17 21:56:56
【问题描述】:

我已经创建了一个具有“isLoggedIn”属性的实体,在成功注册/登录后它被设置为 true。然后我需要做的是,在我的应用启动加载屏幕中,检索这是真还是假,然后使用该结果激活 2 个 segues 中的 1 个。

这是我已经检索到的内容(问题区域):

var tasks : [Task] = []
func getData() {
    print("at least this worked")

    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
    do {
        tasks = try context.fetch(Task.fetchRequest())

        print("please let task work: \(tasks)")

    }
    catch {
        print("fetching failed")
    }
}

这是我必须保存的:

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let login = Task(context: context)
login.isLoggedIn = true

//Save that user is logged in below
(UIApplication.shared.delegate as! AppDelegate).saveContext()

这是我的实体/属性设置:

Task.fetch 请求预定义为

public class func fetchRequest() -> NSFetchRequest<Task>
Declared In Task+CoreDataProperties.swift

我遇到的具体问题是我不知道我设置的 bool 是否实际被保存或检索 / 如果两者都是,那么我找不到访问 true / false / not set 结果的方法。

我要做的是在用户成功登录时将 bool isLoggedIn 更新为 true,然后在下次启动应用程序时检索该真实结果并使用它。如何做到这一点?

【问题讨论】:

  • 具体是什么问题?
  • 另外,如果 fetch 有问题,最好知道 Task.fetchRequest() 做了什么。
  • 我已经编辑了帖子以使其更具信息性
  • 请包括您期望看到的内容以及您实际看到的内容。上面的代码将在每次运行时创建并保存一个新的 Task 实体,并且您在任何时候都没有阅读 Bool 属性,这应该是您的问题所在

标签: ios core-data swift3 boolean fetch


【解决方案1】:

好的,我将尝试向您解释您需要做什么才能首先看到结果数据的输出

1st : - 从您的应用文档目录中检索您的文档目录路径

let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true) as NSArray
    let documentsDirectory = paths.objectAtIndex(0) as! String
    let path = documentsDirectory.stringByAppendingString("/filename")

第二个:您需要一个工具来查看保存在该目录中的数据库。 我建议下载此软件以简化您的工作

SQLiteStudio

现在只需复制路径并粘贴到资源管理器文件中,在这里您可以看到 Db.sqlite 文件中的所有表并检查值是否正在存储。

3rd : 在确定该值存在于 Db 中后,只需获取它并添加 IF 语句以检查布尔值以选择您喜欢的 segue。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多