Конечно, вы должны присвоить значения атрибуту idx
, и вы должны назначить результат выборки для метки.
Сначала замените
let appDelegate = UIApplication.shared.delegate as! AppDelegate //Singlton instanc
var context:NSManagedObjectContext!
на
lazy var context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
Затем замените openDatabse
и saveData
на
func openDatabse()
{
let names = ["kim kardashian", "jessica biel", "Hailey Rienhart"]
for i in 0..<names.count {
let newUser = Users(context: context)
newUser.name = names[i]
newUser.idx = Int32(i + 1)
}
print("Storing Data..")
do {
try context.save()
} catch {
print("Storing data Failed", error)
}
}
Наконец добавьте строку в joke
, чтобы отобразить значение
func joke(at index : Int) {
let fetchRequest = NSFetchRequest<Users>(entityName: "Users")
fetchRequest.predicate = NSPredicate(format: "idx == %d", Int32(index))
do {
if let user = try context.fetch(fetchRequest).first {
labelName.text = user.username
}
} catch {
print("Could not fetch \(error) ")
}
}
Создает записи и назначает соответствующие индексы. Затем следует ввести номер в текстовое поле.
Но - еще раз - при каждом запуске приложения снова вставляются 3 записи с одинаковыми именами и индексами. Знайте об этом!