Swift :验证核心数据属性



我有一个带有核心数据的 Swift 应用程序,它存储以下内容:

  • 用户名
  • 电子邮件
  • 钥匙

我有一个视图控制器来正确收集此信息,并将此信息存储在核心数据中。所有 3 个属性都有一个带有保存按钮的文本字段,它会保存。

我有另一个故事板视图控制器,它有一个用于"键"的文本字段和一个用于验证键的按钮以及一个标签,用于显示是否接受键。当用户输入正确的键时,将显示"继续按钮">

我的问题:此时,我的应用程序检索信息并在控制台中显示保存的信息。但是,它不会专门检查密钥,并允许任何信息进入"继续"按钮。如何调用属性而不是整个实体并使用该信息允许继续?我假设我必须访问实体才能检索属性,但是我该怎么做呢?

这是我的验证按钮代码:

 @IBAction func verifyKey()
{
    var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
    var context: NSManagedObjectContext = appDel.managedObjectContext!
    var request = NSFetchRequest(entityName: "User")
    request.returnsObjectsAsFaults = false
    var results:NSArray = context.executeFetchRequest(request, error: nil)!
    if (results.count > 0)
    {
        btnContinueAppears.hidden = false
        keyLabel.text = "Key Accepted"
        keyLabel.resignFirstResponder()
        keyLabel.textColor = UIColor.greenColor()
        for res in results
        {
            println(res)
        }
    }
    else
    {
        btnContinueAppears.hidden = true
        keyLabel.text = ("Key Denied, Access Denied")
        keyLabel.resignFirstResponder()
        keyLabel.textColor = UIColor.redColor()
        println("0 Results Returned...Potential Error")
    }
}

只需从数组访问对象,然后像这样访问其属性,

@IBAction func verifyKey()
{
    var appDel: AppDelegate = (UIApplication.sharedApplication().delegate as AppDelegate)
    var context: NSManagedObjectContext = appDel.managedObjectContext!
    var request = NSFetchRequest(entityName: "User")
    request.returnsObjectsAsFaults = false
    var results:NSArray = context.executeFetchRequest(request, error: nil)!
    if (results.count > 0)
    {
        let aResult = results.first! as NSManagedObject
        btnContinueAppears.hidden = false
        keyLabel.text = "Key Accepted"
        keyLabel.resignFirstResponder()
        keyLabel.textColor = UIColor.greenColor()
        for res in results as [NSManagedObject]
        {
          let textColor = res.valueForKey("color")
        }
    }
    else
    {
        btnContinueAppears.hidden = true
        keyLabel.text = ("Key Denied, Access Denied")
        keyLabel.resignFirstResponder()
        keyLabel.textColor = UIColor.redColor()
        println("0 Results Returned...Potential Error")
    }
}

如果尚未将类分配给实体,则应使用 kvc getter 方法使用 valueForKey: 访问属性的值。否则,您可以简单地使用类和访问属性,例如访问常规类的属性。

希望对您有所帮助。

我已经通过添加以下行解决了它:

request.predicate = NSPredicate(format: "key = %@", "" + keyEnter.text)

我在以下之后添加了它:

request.returnsObjectsAsFaults = false    

这有效并且正在检查数据库中的密钥。

恭敬地感谢您的反馈。 :)

最新更新