#xcode #swift3 #ios10
#xcode #swift3 #ios10
Вопрос:
Каков правильный тип для объекта?
Например, при сохранении значения в атрибут объекта, какое объявление типа должно заменить три вопросительных знака ниже?
func setSample() {
let saveSample: <type???> = SampleEntity(context: context)
saveSample.sampleAttribute = "Save a new string."
do {
try context.save()
} catch {
print("Error with save: (error)")
}
}
FWIW: NSEntityDescription возвращает ошибки:
Cannot convert value of type 'SampleEntity' to specified type 'NSEntityDescription'
Value of type 'NSEntityDescription' has no member 'sampleAttribute'
Контекст Я бы хотел превратить объект в переменную, чтобы сделать что-то вроде этого:
func setSample() {
var saveSample: ???
if (criteria) { saveSample = Entity1(context: context) }
if (criteria) { saveSample = Entity2(context: context) }
if (criteria) { saveSample = Entity3(context: context) }
saveSample.sampleAttribute1 = "Foo"
saveSample.sampleAttribute2 = "Bar"
saveSample.sampleAttributeNth = "Etc"
do {
try context.save()
} catch {
print("Error with save: (error)")
}
}
Комментарии:
1. Нам нужно больше контекста о том, чего именно вы пытаетесь достичь, и каковы объявления
Entity1
иEntity2
.2. @ Alexander Momchliov,
Entity1
,Entity2
,Entity3
указаны ли имена объектов в CoreData.xcdatamodeld.
Ответ №1:
Используйте ??? = SampleEntity
или удалите ???
часть полностью:
let saveSample = SampleEntity(context: context)
let saveSample: SampleEntity = SampleEntity(context: context)
let saveSample: SampleEntity
Комментарии:
1. Это не работает в последнем подходе, в котором он вперед объявляет переменную, которая будет заполнена позже одним из нескольких вариантов, на основе некоторых критериев.