Swift:验证核心数据属性

时间:2014-12-09 22:37:54

标签: ios core-data swift

我有一个带有Core Data的Swift应用程序,它存储以下内容:

  • 用户名
  • 电子邮件
  • 关键

我有一个ViewController来正确设置收集此信息,并将此信息存储在核心数据中。所有3个属性都有一个带有保存按钮的文本字段并保存。

我有另一个Storyboard ViewController,它有一个用于“key”的Textfield和一个用于验证密钥的Button以及一个标签,用于显示密钥是否被接受。 当用户输入正确的密钥时,出现“继续按钮”

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

以下是验证按钮的代码:

 @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")
    }
}

2 个答案:

答案 0 :(得分:0)

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

@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:来访问属性的值。否则,您可以简单地使用类和访问属性,例如访问常规类的属性。

希望它有所帮助。

答案 1 :(得分:0)

我已经通过添加以下内容解决了这个问题:

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

我在:

之后添加了它
request.returnsObjectsAsFaults = false    

这工作正在检查数据库中的密钥。

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