, поэтому я пытаюсь сделать повторно используемую функцию, где я передаю объект (у меня есть 3 класса объектов), но когда я пробую код ниже , код лает у меня, что value of type object has no member id
. Он показывает это в строке кода: arrayFromDB.append(items.id)
Пытаясь сделать повторно используемую функцию, передав объект в Realm, дает ошибку
Это странно, потому что все три моих объектов содержат ID
func deleteUnwanted (fromJSON:[Int], db: Object.Type) {
var arrayFromDB:[Int] = [Int]()
let realm = try! Realm()
let getFromDB = realm.objects(db)
for items in getFromDB {
arrayFromDB.append(items.id)
}
... other stuff
на вызов самой функции (которая не дает ошибок)
self.deleteUnwanted(self.catstringJson,db: LocalDataFolders.self)
классы объектов
class LocalDataF: Object {
dynamic var id:Int = 0
...
override static func primaryKey() -> String? {
return "id"
}
}
class LocalDataC: Object {
dynamic var id:Int = 0
...
override static func primaryKey() -> String? {
return "id"
}
}
class LocalDataA: Object {
dynamic var id:Int = 0
...
override static func primaryKey() -> String? {
return "id"
}
}
Я ничего не знаю о Царстве, но похоже, что вы хотите получить общую функцию. Если это так, это должно быть определено как: 'func deleteUnwanted (fromJSON: [Int], db: T.Type)', используя 'Object.Type', вы фактически просто используете' Object'. Также вы должны определить тип или протокол с свойством 'id', а затем ограничить общий параметр таким, чтобы получить доступ к' id' внутри функции. –
sgib
Когда я пытаюсь это сделать, он возвращает 'Невозможно преобразовать значение типа T.Type 'в ожидаемый тип аргумента« Object.Type »в строке' let getFromDB = realm.objects (db) ' Тип всегда будет объекта, поэтому я не уверен, должен ли я сделать его общим. Он может иметь 3 разных объекта, ничего больше. – SoundShock
Возможно, вы можете попробовать 'func deleteUnwanted ...', чтобы ограничить его тем, что он всегда является объектом, но даже тогда вы не сможете получить доступ к свойству 'id', не задавая тип, обладающий свойством' id'. –
sgib