सुझाया गया तरीका सदस्य वार सुविधा प्रारंभकर्ता पैदा कर रही है, निम्नलिखित की तरह:
class Item: Object {
dynamic var isBook: Bool = true
dynamic var numberOfPages: Double = 0
dynamic var isInForeignLanguage: Bool = true
dynamic var isFictional: Bool = true
dynamic var value: Int {
get {
return calculalatedValue()
}
}
convenience init(isBook: Bool, numberOfPages: Double, isInForeignLanguage: Bool, isFictional: Bool) {
self.init()
self.isBook = isBook
self.numberOfPages = numberOfPages
self.isInForeignLanguage = isInForeignLanguage
self.isFictional = isFictional
}
...
}
आप डिफ़ॉल्ट प्रारंभकर्ता क्योंकि छोड़ नहीं कर सकते पूछताछ के लिए वस्तुओं को तत्काल करने के लिए दायरे को डिफ़ॉल्ट प्रारंभकर्ता की आवश्यकता होती है। दायरे से पूछताछ करते समय, रियलम ऑब्जेक्ट को तुरंत चालू करने के लिए आंतरिक रूप से डिफ़ॉल्ट प्रारंभकर्ता को कॉल करता है।
आप डिफ़ॉल्ट प्रारंभकर्ता को ओवरराइड भी कर सकते हैं, लेकिन हम इसकी अनुशंसा नहीं करते हैं। क्योंकि जब आप डिफ़ॉल्ट प्रारंभकर्ता को ओवरराइड करते हैं, तो आपको स्विफ्ट प्रकार सिस्टम सीमा के कारण ओबीजेसी परत से विरासत में प्राप्त अन्य आवश्यक प्रारंभकर्ताओं को ओवरराइड करना चाहिए। इसके अलावा आपको Realm
और RealmSwift
फ्रेमवर्क दोनों आयात करना चाहिए। क्योंकि उन प्रारंभकर्ताओं के मानकों में उद्देश्य-सी केवल कक्षा होती है।
import RealmSwift
import Realm // Need to add import if you override default initializer!
class Item: Object {
dynamic var isBook: Bool = true
dynamic var numberOfPages: Double = 0
dynamic var isInForeignLanguage: Bool = true
dynamic var isFictional: Bool = true
dynamic var value: Int {
get {
return calculalatedValue()
}
}
required init() {
super.init()
}
required init(realm: RLMRealm, schema: RLMObjectSchema) {
super.init(realm: realm, schema: schema)
}
required init(value: AnyObject, schema: RLMSchema) {
super.init(value: value, schema: schema)
}
स्रोत
2016-04-25 09:55:38
धन्यवाद: बूल = सच है, बस प्रारंभ वर isBook बिना छोड़ दो! तो प्रारंभ करने से निपटने के लिए अनुशंसित तरीका पहला कोड स्निपेट है। पहले डिफ़ॉल्ट प्रारंभकर्ता आसानी से सुविधा init के बाद खेल में आते हैं? – DCDC
हां। प्रारंभ करने से निपटने के लिए अनुशंसित तरीका पहला कोड स्निपेट है। और पहले डिफ़ॉल्ट प्रारंभकर्ता सुविधा में शामिल होते हैं, इसके बाद सुविधा init। –