Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.

How do I get a class name

0 oy
34 kez görüntülendi
19, Ocak, 2016 ios development kategorisinde ibolat tarafından soruldu

Merhaba Arkadaşlar,

Dinamik bir class yapısı oluşturmaya  çalışıyorum örnek olarak database class'ı için bu işlemi yaparken bir nokta da takıldım bildiğiniz gibi bir Entity oluşturduktan sonra o entity'e ait NSManagedObject subclass'ını oluşturuyoruz örneğin Users.swift olsun bu classın adı ben kendı olusturduğum dinamik olan DatabaseController class'ımda mesela  select fonksiyonumda aşağıda görüldüğü gibi koyu yazılmıs olan  "Users" class ını bir değişken olarak dusunup nasıl dinamikleştirebilirim başka entity ler için de nasıl kullanılabilir hale getirebilirim bu fonksiyonu.

--- DatabaseController içi -------

func selectUser(tableName: String, selectedField: String){

        let fetchRequest = NSFetchRequest(entityName: tableName)

        let appdel:AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

        let context:NSManagedObjectContext = appdel.managedObjectContext

        

        do {

            let results = try context.executeFetchRequest(fetchRequest) as! [Users

            if (results.count > 0) {

           ............

 

 

1 cevap

0 oy
19, Ocak, 2016 yasin tarafından cevaplandı

dilediğinizde farklı bir context'den fetch yapabilmeyi istiyorsunuz galiba öylemi.
basit bir if else statement'i ile değiştirin context'i.

selectUser metodunuza bir parametre daha ekleyin ve bu parametreye göre bir if else veya nebileyim switch statetment'i kullanarak, mesela şöyle:

if myNewParameter == "Users" {
     let results = try context.executeFetchRequest(fetchRequest) as! [Users] 
} else {
     let results = try context.executeFetchRequest(fetchRequest) as! [Others] 
}

gibi, gibi...

19, Ocak, 2016 ibolat tarafından yorumlandı
Yasin hocam bu şekilde kullanıcının oluşturduğu herhangibir entity name'i kontrol etmek mumkun olmayabilir. Mesela ben bu classımı size gönderiyorum ve kullanabileceğiniz bütün database fonksiyonları var projenizde kullanıyorsunuz (kolaylık olması ıcın hazırlıyorum bu class'ı )benim istediğim selectuser methodunu çağırdınız zaman istediğiniz herhangibir yerde sadece fonksyıon adını ve parametre degıskenlerını kullanarak select ıslemını gerceklestırmek kullanıcı entity name ini "abcd" bile vermıs olabılır.. umarım anlatabilmişimdir
19, Ocak, 2016 yasin tarafından yorumlandı
oluşturulan custom ManagedObject class'ının ismi nasıl alınacak peki?
result değerini default managedObject'le döndürüp. içerisindeki değişkenlere ulaşmak için isKindOfClass testi yapılabilir belki ama. illaki customClass'a ait ismin belirtiliyor olması lazım bir şekilde.
19, Ocak, 2016 ibolat tarafından yorumlandı
Aslında almak istediğim de tam olarak oluşturulan ManagedObject class'ının ismi.. dediğiniz gibi bir managedObject değişkenle dönderip almaya çalıştım ama yinede class ismi lazım oluyor.. Galiba bu kısmı kullanıcıya bırakmam gerekecek.
...