Извлечение основных данных в виде списка, разделенного запятыми

#arrays #swift #core-data #swift4

#массивы #swift #core-data #swift4

Вопрос:

Я понимаю, что мне не хватает чего-то простого, но как новичок Swift я хожу кругами и был бы признателен за указание на то, что я делаю неправильно?!

У меня есть объект основных данных под названием «Numbers» с атрибутом (Int16) под названием «userNumbers». Я извлекаю результаты, подобные:

 let appDelegate = UIApplication.shared.delegate as! AppDelegate

    let context = appDelegate.persistentContainer.viewContext

    let request = NSFetchRequest<NSFetchRequestResult>(entityName: "Numbers")
    //request.predicate = NSPredicate(format: "age = %@", "12")
    request.returnsObjectsAsFaults = false
    do {
         let result = try context.fetch(request)
        for data in result as! [NSManagedObject] {
            print("(data.value(forKey: "userNumbers") as! Int16)")
        }

    } catch {            
        print("Failed")
    }
  

Результат в моей консоли:

12

13

18

19

21

Мне нужно знать, как сделать этот список разделенным запятыми, чтобы я мог использовать его в массиве. По сути, мне нужно, чтобы возвращаемое значение было: 12,13,18,19,21

Все, что я пытаюсь, кажется неправильным!

Ответ №1:

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

 let request = NSFetchRequest<Numbers>(entityName: "Numbers")
  

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

Вы можете map преобразовать результат в массив Int16 с помощью

 do {
    let result = try context.fetch(request) // the type is [Numbers]
    let numberArray = result.map{$0.userNumbers}
    print(numberArray)
}
  

Комментарии:

1. Спасибо — высоко ценится