2016-10-11 5 views
1

こんにちは皆、これを読んでいただきありがとうございます。レルム+ NSClassFromString

私はRealmの新機能です。ビルド方法を理解できない機能に悩まされています。私の意図はfunc delete(className:String, id:Int){と呼ばれる1つのレルムクラスのオブジェクトをそのIDで削除できる機能を持つことです。関数の内部コードは次のとおりです。

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) 
    } 
} 

しかし、実際には、それはオールウェイズNILだlet theClass = NSClassFromString(objectNameV)ということです。

助けていただければ幸いです。私はちょうど領域のクラス名を与え、そのクラスのオブジェクトのIDからそれを削除できる関数が必要です

レルムバージョン:2.0.1 Xcodeのバージョン:8

+0

私が代わりにobjectNameVのだと思う:代わりに、オブジェクトパラメータとrealm.objects(object.self)にクエリを更新:Stringパラメータを、あなたは、オブジェクトを渡す必要があります。 filter( "id = \(id)") – IxPaka

答えて

1

According to the Apple developer docsは、スウィフトのクラスは、そのモジュール名で名前空間されています。クラス名を書くだけでは不十分です。モジュール名も含める必要があります。

Appleは、同社のウェブサイト上で使用される例は次のとおりです。

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

私はそれを見て、それを試しましたが、良い結果は全くありませんでした。あなたや誰かがそれを試すことができましたか?とにかく明日、私はもう一度見て、ここにコメントします。 –

+0

お世話になりました! –