如何从核心数据中的关系中获取价值(swift)
我有一个名为“Users”的实体,它有两个属性,分别是“username”和“password” 我有另一个实体名为“信息”,有4个属性名为“化身”、“等级”、“损失”、“胜利” 我与名为的“用户”实体建立了关系 “用户信息” 目的地:“信息” 反向:“用户详细信息” 我与名为“Info”的实体建立了关系 “用户详细信息” 目的地:“用户” 反向:“用户信息” 这是我现在的代码:如何从核心数据中的关系中获取价值(swift),swift,xcode,core-data,core-data-migration,Swift,Xcode,Core Data,Core Data Migration,我有一个名为“Users”的实体,它有两个属性,分别是“username”和“password” 我有另一个实体名为“信息”,有4个属性名为“化身”、“等级”、“损失”、“胜利” 我与名为的“用户”实体建立了关系 “用户信息” 目的地:“信息” 反向:“用户详细信息” 我与名为“Info”的实体建立了关系 “用户详细信息” 目的地:“用户” 反向:“用户信息” 这是我现在的代码: @IBAction func loginButtonPressed(_ sender: UIButton) {
@IBAction func loginButtonPressed(_ sender: UIButton) {
// getting the inputs from the user
let username = usernameField.text!
let userPassword = passwordField.text!
// creating a request to fetch the results for the users
let context = appDelegate.persistentContainer.viewContext
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
request.returnsObjectsAsFaults = false
// now getting all the results
do
{
// saving results in results
let results = try context.fetch(request)
// now checking if there is any results
if results.count > 0
{
// creating a for loop to go through the results
for result in results as! [NSManagedObject]
{
// checking if username and password match
if username == (result.value(forKey: "username") as? String)! && userPassword == (result.value(forKey: "password") as? String)!
{
// if they do set "isLoggedIn" to true
UserDefaults.standard.set(true, forKey:"isLoggedIn")
UserDefaults.standard.synchronize()
// Now saving the username and info of the user to the main viewController to display the users data later
// I NEED TO SAVE FROM THE RELATIONSHIP DATA HERE
// dismissing this view to go to the main view
self.dismiss(animated: true, completion: nil)
}
else
{
// if username and passwords dont match then display it to the user.
alertMessage(userMessage: "Login failed username or password do not match!")
}
}
}
else
{
// if no results then display error message
alertMessage(userMessage: "Login Failed: No users registered!")
}
}
catch
{
// catch
}
}
@iAction func LoginButton按下(\uSender:UIButton){
//从用户那里获取输入
让username=usernameField.text!
让userPassword=passwordField.text!
//创建请求以获取用户的结果
让上下文=appDelegate.persistentContainer.viewContext
let request=NSFetchRequest(entityName:“用户”)
request.returnsObjectsAsFaults=false
//现在得到所有的结果
做
{
//在结果中保存结果
let results=try context.fetch(请求)
//现在检查是否有任何结果
如果results.count>0
{
//创建for循环以遍历结果
对于结果,结果为![NSManagedObject]
{
//检查用户名和密码是否匹配
如果用户名==(result.value(forKey:“username”)作为?字符串)!&&userPassword==(result.value(forKey:“password”)作为?字符串)!
{
//如果他们真的将“isLoggedIn”设置为true
UserDefaults.standard.set(true,forKey:“isLoggedIn”)
UserDefaults.standard.synchronize()
//现在将用户的用户名和信息保存到主viewController,以便稍后显示用户数据
//我需要在这里保存关系数据
//放弃此视图以转到主视图
self.disclose(动画:true,完成:nil)
}
其他的
{
//如果用户名和密码不匹配,则将其显示给用户。
alertMessage(userMessage:“登录失败的用户名或密码不匹配!”)
}
}
}
其他的
{
//如果没有结果,则显示错误消息
alertMessage(userMessage:“登录失败:未注册用户!”)
}
}
抓住
{
//抓住
}
}
检查用户名和密码是否正确后,我需要将用户名和密码关系中的数据存储到4个变量中。命名:赢,输,等级和化身
我对如何从关系中获得正确的数据感到困惑
我尝试过使用“result”变量来获得这个结果,但没有成功
感谢人们通常会创建表示实体的类,而不是直接作为
NSManagedObjects
使用实体,因此这似乎有点奇怪。但您应该能够使用setValueForKey:
result.setValue(/* whatever */, forKey: "userInfo.avatar")
看起来你有一个末日金字塔@明天到期的PEEJWEEJ项目只需要获取数据。不管怎样,我能做到吗?我已经设置好了值。我试图读取数据并将其放入变量中。对不起,如果我把问题写错了!