我有一个带有核心数据的 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
这有效并且正在检查数据库中的密钥。
恭敬地感谢您的反馈。 :)