2016-03-22 18 views
0
Swift'de CoreData/SQLite'nin modern bir veritabanı olan RealmSwift üzerinde çalışıyorum. Ben yönetebilir bir Class için bir tasarım nasıl uygulanacağını merak ediyorum

Realm Database için Tasarım Kalıbı Swift 3.1 - Singleton

/RealmSwift Framework

Bu soru için tüm sorguları işlemek SQLite Modeli Yöneticisi uygulamaya ancak RealmSwift için biraz benzer.

Özellikle, yukarıda bir singleton nesnesi/örneği belirtilmesini istemiyorum. Diyar Realm önceki örnekleri üzerine düzenlenen ve her seferinde bir çağrı geri dönüştürülmektedir oldukça zeki iç önbelleğe alma sistemine sahiptir

Singleton.instance.method(args) 
+0

TL; DR [gönderme \ _once singleton kullanılması bu için çoğaltmak Swift modelinde] (http://stackoverflow.com/questions/24024549/using-a-dispatch-once-singleton-model-in-swift) En alt satır TiM'in söylediği şey. –

cevap

7

:

+0

Ayrıca, SomeManager sınıfınızın çoklu örneklemelerini kısıtlamak için özel init() önerilir. Aksi halde sınıfınız gerçek bir bekar değildir. – Whirlwind

+0

@TiM i Realm ile ilgili tüm sorguları işlemek için kullanılacak bir yönetim sınıfı için bir uygulama fikri gerektirir –

1

bir vaka ile bir enum kullanın: gibi

enum Singleton: Protocols { 
    case instance 
    /// methods 
} 

kullanılmış let realm = try! Realm() gibi oluşur. Bu nedenle, gerçekten gerekli değildir, ya da bir Realm örneğinin kendisini bir tektona dahil etmeyi denemeniz önerilir.

Realm örneğinin ayarlarını özel olarak özelleştirmek isterseniz, bunu normal olarak Statik ve iş parçacığı güvenli olan bir Realm Configuration nesnesi aracılığıyla gerçekleştirirsiniz. Bu durumda, yeni bir Realm örneği oluşturmanız gerektiğinde, uygun Configuration nesnesini döndüren bir tekil (veya yalnızca bir statik sınıf yöntemi) olması daha uygun olacaktır.

that thing in swift

Swift içinde singletons nasıl oluşturulacağı hakkında bir sayfa vardır ve aslında bir sınıf uygulamasının sadece tek bir statik özellik var:

class SomeManager { 
    static let sharedInstance = SomeManager() 
}