2017-02-08 16 views
0

Я работаю над приложением, использующим 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)") 
    } 
} 

я пробовал разные имена, но получить то же самое, что показывает только последнюю, как вещественное число, если я момент из последней, то первых показывает реальную стоимость.

The text fields

+0

Так вы пытаетесь отобразить несколько значений tWeight в одном текстовом поле? Это в таблице? – MwcsMac

+0

Привет, Нет, это 2 разных текстовых поля, когда я их устанавливаю как строки в данных Core и устанавливаю любой вместо double, тогда он работает, но мне нужно, чтобы они были двойными, потому что я хочу преобразовать число, которое приходит с помощью математики –

+0

Почему у вас нет обоих номеров в одной и той же функции сохранения? Когда вы сохраняете две разные функции, вы создаете новую строку для каждого сохранения. Поэтому, когда вы сохраняете текущий вес 3, Target становится сохраненным как ноль. То же самое происходит, когда вы сохраняете цель. – MwcsMac

ответ

0

Попробуйте что-то больше, как это, чтобы сохранить так, что вы спасаете как в той же строке.

func storeTranscription18TW() { 
    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(CWConvert, forKey: "cWeight") // Note the change from pageText 
    transc.setValue(TWConvert, forKey: "tWeight") // Note the change from pageText 

    //save the object 
    do { 
     try contexta.save() 
     print("saved!") 
     } catch let error as NSError { 
      print("Could not save \(error), \(error.userInfo)") 
     } catch { 

    } 
} 

Тогда, когда вы сделаете это, они оба будут выполнены в той же функции.

+0

Я уже пробовал это, и он сохраняет одно и то же значение последнего введенного и сохраняет его в обоих полях вместо них с отдельными номерами –

+0

См. Обновление, которое я сделал, имеет больше смысла. – MwcsMac

+0

с изменением страницыText дает ошибку, говорящий о неразрешенном идентификаторе cWeightText и том же в tWeight –