Hoşgeldin. Soru sormak veya cevaplamak için hemen üye ol.
0 oy
477 kez görüntülendi
ios development kategorisinde tarafından

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
tarafından

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...

tarafından
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
tarafından
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.
tarafından
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.
...