используйте deletetetate поля uitext для извлечения двоичных данных coredata по их количеству - PullRequest
0 голосов
/ 12 января 2020

Мой swift-код сохраняет 3 имени в основной сущности данных «username». Я хочу использовать делегат uitextfield, чтобы получить строку c. Поэтому, когда пользователь вводит 2 в текстовое поле. На ярлыке labelName должно появиться имя Джессика Биль. Таким образом, пользователь вводит число в текстовое поле, строка появляется на метке. Если номер 1, введите 1-й NSManagedObject в основной сущности данных userName. Ссылка на проект 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")
    }
}

}

1 Ответ

0 голосов
/ 12 января 2020

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

Поскольку имена, очевидно, не связаны с каким-либо порядком добавления уникальный идентификатор, такой как целочисленный атрибут index - или любое другое имя, разумное - и затем извлечение данных с помощью предиката NSPredicate(format: "index == %ld", Int(enterT.text!) ?? 0).

Это необходимо сделать, поскольку Core Data сохраняет объекты неупорядоченные.

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