#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. Спасибо — высоко ценится