【问题标题】:use uitextfield delegetate to fetch coredata binary data by its count number使用 uitextfield 委托通过其计数获取 coredata 二进制数据
【发布时间】:2020-01-11 21:41:26
【问题描述】:

我的快速代码将 3 个名称保存到核心数据实体“用户名”。我想使用 uitextfield 委托来提取特定的字符串。因此,当用户在文本字段中输入 2 时。在标签 labelName 上应该出现名称 jessica Biel。因此,用户在文本字段中输入一个数字,标签上就会出现一个字符串。如果数字 1 是在核心数据实体 userName 中输入第一个 NSManagedObject。项目链接https://github.com/redrock34/jessicaBiel

import UIKit
import CoreData

class ViewController: UIViewController,uitextfielddele {
@IBOutlet var labelName : UILabel!
@IBOutlet var enterT : UITextField!


// MARK: Variables declearations
let appDelegate = UIApplication.shared.delegate as! AppDelegate //Singlton instance
var context:NSManagedObjectContext!

// MARK: View Controller life cycle methods
override func viewDidLoad() {
    super.viewDidLoad()

    openDatabse()
}

// MARK: Methods to Open, Store and Fetch data
func openDatabse()
{
    context = appDelegate.persistentContainer.viewContext
    let entity = NSEntityDescription.entity(forEntityName: "Users", in: context)
    let newUser = NSManagedObject(entity: entity!, insertInto: context)
    let newUser2 = NSManagedObject(entity: entity!, insertInto: context)
    let newUser3 = NSManagedObject(entity: entity!, insertInto: context)
    saveData(UserDBObj: newUser, UserDBObj2: newUser2, UserDBObj3: newUser3)

}

func saveData(UserDBObj:NSManagedObject,UserDBObj2:NSManagedObject,UserDBObj3:NSManagedObject)
{
    UserDBObj.setValue("kim kardashian", forKey: "username")
    UserDBObj2.setValue("jessica biel", forKey: "username")
    UserDBObj3.setValue("Hailey Rienhart", forKey: "username")




    print("Storing Data..")
    do {
        try context.save()
    } catch {
        print("Storing data Failed")
    }

    fetchData()
}

func fetchData()
{
    print("Fetching Data..")
    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Users")
    request.returnsObjectsAsFaults = false
    do {
        let result = try context.fetch(request)
        for data in result as! [NSManagedObject] {
            let userName = data.value(forKey: "username") as! String

            print("User Name is : "+userName)
        }
    } catch {
        print("Fetching data Failed")
    }
}

}

【问题讨论】:

    标签: swift core-data entity nsmanagedobject uitextfielddelegate


    【解决方案1】:

    首先请注意,每次启动应用程序时,都会一次又一次地插入三个记录,因此您会得到一堆重复的记录。

    由于名称显然与任何订单无关,请添加一个 唯一 标识符,例如整数属性 index——或任何合理的名称——然后使用谓词 NSPredicate(format: "index == %ld", Int(enterT.text!) ?? 0) 获取数据。

    您必须这样做,因为 Core Data 将对象无序保存。

    【讨论】:

    • 我在 func textFieldShouldEndEditing(textField: UITextField!) -> Bool { ?
    • 此方法用于验证文本。请阅读documentation
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    相关资源
    最近更新 更多