2016-10-11 3 views
1

Приветствую вас и благодарю вас за это.Realm + NSClassFromString

Я новичок в королевстве, и у меня есть функция, которую я не могу понять, как построить. Мое намерение состоит в том, чтобы одна функция называлась func delete(className:String, id:Int){, которая должна иметь возможность удалять любой объект любого класса Realm по его идентификатору. Внутренний код функции:

func delete(objectNameV:String, id:Int){ 

    let theClass = NSClassFromString(objectNameV) 

    // Get the default Realm 
    let realm = try! Realm() 
    let queryResult = realm.objects(theClass as! Object.Type).filter("id = \(id)") 
    try! realm.write { 
     realm.delete(queryResult) 
    } 
} 

Но дело в том, что let theClass = NSClassFromString(objectNameV) это ВСЕГДА NIL.

Любая помощь приветствуется, Мне просто нужна функция, которая задает имя класса realm, а id из объекта этого класса может удалить его!

версия Realm: 2.0.1 версия Xcode: 8

+0

Я думаю, что вместо objectNameV: параметр String, вы должны передать объект: параметр объекта, а и обновить запрос на realm.objects (object.self). filter ("id = \ (id)") – IxPaka

ответ

1

According to the Apple developer docs, классы в Swift в одном пространстве имен их именами модулей. Поэтому недостаточно просто написать имя класса; вы также должны указать их имя модуля.

Пример Apple, используемый на их вебсайте:

let myPersonClass: AnyClass? = NSClassFromString("MyGreatApp.Person") 
+0

Я видел это и пробовал, но без хорошего результата. Попробовали ли вы или кто-нибудь попробовать? В любом случае, завтра я еще раз рассмотрю и прокомментирую здесь. –

+0

Кстати, спасибо вам! –

Смежные вопросы