从CoreData检索并访问布尔值

时间:2017-01-17 21:56:57

标签: ios core-data swift3 boolean fetch

我已经制作了具有属性'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()

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

enter image description here

Task.fetch请求预定义为

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

SQLiteStudio

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

enter image description here

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