Я работаю над приложением, использующим CoreData.Проблемы с сохранением и получением номеров
Я сильные числа и получаю их, но когда я храню более одного поля, он показывает только последнее поле с номером, но 0 во всех остальных. ниже мои коды.
хранить их ...
let CWConvert = Double(CWeight.text!)
storeTranscription18CW(pageText: (CWConvert)!, textFileUrlString: "cWeight")
savePlus += 1
let TWConvert = Double(TWeight.text!)
storeTranscription18TW(pageText: (TWConvert)!, textFileUrlString: "tWeight")
и ...
func getContext() -> NSManagedObjectContext {
_ = UIApplication.shared.delegate as! AppDelegate
return DataController().managedObjectContext
}
func storeTranscription18CW (pageText: Double, textFileUrlString: String) {
let context = getContext()
//retrieve the entity that we just created
let entity = NSEntityDescription.entity(forEntityName: "TextInputs", in: context)
let transc = NSManagedObject(entity: entity!, insertInto: context)
// set the entity values
transc.setValue(pageText, forKey: "cWeight")
//save the object
do {
try context.save()
print("saved!")
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
} catch {
}
}
func storeTranscription18TW (pageText: Double, textFileUrlString: String) {
let contexta = getContext()
//retrieve the entity that we just created
let entitya = NSEntityDescription.entity(forEntityName: "TextInputs", in: contexta)
let transc = NSManagedObject(entity: entitya!, insertInto: contexta)
// set the entity values
transc.setValue(pageText, forKey: "tWeight")
//save the object
do {
try contexta.save()
print("saved!")
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
} catch {
}
}
и retrive.
func getTranscriptions18CW() {
//create a fetch request, telling it about the entity
let fetchRequesta: NSFetchRequest<TextInputs> = TextInputs.fetchRequest()
do {
//go get the results
let searchResults18CW = try getContext().fetch(fetchRequesta)
for transa in searchResults18CW as [NSManagedObject] {
if let resulta = transa.value(forKey: "cWeight") {
if let stra = resulta as? String {
CWeight.text = stra
}else {
CWeight?.text = "\(resulta)"
}
}
}
//get the Key Value pairs (although there may be a better
}catch {
print("Error with request: \(error)")
}
}
func getTranscriptions18TW() {
//create a fetch request, telling it about the entity
let fetchRequest: NSFetchRequest<TextInputs> = TextInputs.fetchRequest()
do {
//go get the results
let searchResults18TW = try getContext().fetch(fetchRequest)
for trans in searchResults18TW as [NSManagedObject] {
if let result = trans.value(forKey: "tWeight") {
if let str = result as? String {
TWeight.text = str
}else {
TWeight?.text = "\(result)"
}
}
//get the Key Value pairs (although there may be a better way to do that...
}
}catch {
print("Error with request: \(error)")
}
}
я пробовал разные имена, но получить то же самое, что показывает только последнюю, как вещественное число, если я момент из последней, то первых показывает реальную стоимость.
Так вы пытаетесь отобразить несколько значений tWeight в одном текстовом поле? Это в таблице? – MwcsMac
Привет, Нет, это 2 разных текстовых поля, когда я их устанавливаю как строки в данных Core и устанавливаю любой вместо double, тогда он работает, но мне нужно, чтобы они были двойными, потому что я хочу преобразовать число, которое приходит с помощью математики –
Почему у вас нет обоих номеров в одной и той же функции сохранения? Когда вы сохраняете две разные функции, вы создаете новую строку для каждого сохранения. Поэтому, когда вы сохраняете текущий вес 3, Target становится сохраненным как ноль. То же самое происходит, когда вы сохраняете цель. – MwcsMac