如何获取Coredata?

时间:2018-07-27 13:26:24

标签: ios swift core-data swift4

我正在尝试获取具有属性User的Coredata token,但是由于出现错误提示Value of type '[User]' has no member 'token',我无法使其正常工作。我已经尝试了一些在堆栈上的修复,但似乎无法正常工作。

这是我的代码:

let managedContext = coreDataStack.managedContext
let request = NSFetchRequest<User>(entityName: "User")
do {
    let users = try managedContext.fetch(request)
    print(users)
    print(users.token)

} catch {
    print(error.localizedDescription)
}

2 个答案:

答案 0 :(得分:2)

您非常接近,users的类型为[User],因此,一个User对象的数组,因此可以使用以下命令获取每个User的令牌:

let managedContext = coreDataStack.managedContext
let request = NSFetchRequest<User>(entityName: "User")
do {
    let users = try managedContext.fetch(request)
    for user in users {
        print(user.token)
    }
} catch {
   print(error.localizedDescription)
}

或者如果您想获得最后一个(.last或第一个(.firstUser,您可以这样做:

do {
    let users = try managedContext.fetch(request)
    if let user = users.first {
        print(user.token)
    }
} catch {
   print(error.localizedDescription)
}

答案 1 :(得分:0)

如果您尝试访问特定用户的令牌,则应在唯一属性上设置谓词。例如。例如,如果唯一属性是uniqueId:

let managedContext = coreDataStack.managedContext 
let request =    NSFetchRequest<User>(entityName: "User") 
request.predicate =    NSPredicate(format: "uniqueId == %@", uniqueId)  
do {  
let users =    try managedContext.fetch(request)  
  if let user = users.last {   
  print(user.token)  
  }  
} catch { 
 print(error.localizedDescription)  
}