从核心数据到文本字段的双重回复

时间:2017-02-08 00:56:05

标签: swift string core-data double

我正在尝试将数字放入核心数据中,然后将其检索回来。我已经可以使用字符串这一切都很好但是尝试用双打它似乎存储它们但不检索它们。以下是我的代码。我希望有人可以提供帮助,如果可以,请提前感谢。

要回头......

    func getTranscriptions18CW () {

    let fetchRequest: NSFetchRequest<TextInputs> = TextInputs.fetchRequest()
    do {
        //go get the results
        let searchResults18CW = try getContext().fetch(fetchRequest)

        if indexPageSum == 18 {
            for trans in searchResults18CW as [NSManagedObject] {
                let result = trans.value(forKey: "cWeight")
                if result != nil {

                    CWeight.text = result! as? String
                }
            }
        }
    }catch {
        print("Error with request: \(error)")
    }
}

然后保存。

   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
    if indexPageSum == 18 {
        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 {

    }
}

然后另一部分要保存。

 if indexPageSum == 18 {
                            let CWConvert = Double(CWeight.text!)
                            storeTranscription18CW(pageText: (CWConvert)!, textFileUrlString: "cWeight")

1 个答案:

答案 0 :(得分:0)

表达式:

result! as? String

基本上意味着&#34;如果result属于String类型,则返回它,否则返回nil&#34;。这适用于存储在数据库中的String,但会将nil分配给CWeight.text以获取其他任何内容。

您需要以下内容:

if let result = trans.value(forKey: "cWeight") {
    if let str = result as? String {
        CWeight.text = str
    }
    else {
        CWeight.text = "\(result)"
    }
}

这适用于最常见的数据类型。表达式"\(result)"使用字符串插值将result中存储的值转换为适当的字符串。

您可能还想研究生成NSManagedObject子类以使其更易于处理。