//////////////////////////////////////////////////////////////////////////// // // Copyright 2015 Realm Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////// import Realm /// A protocol describing types that can parameterize a `RealmOptional`. public protocol RealmOptionalType { } public extension RealmOptionalType { /// :nodoc: public static func className() -> String { return "" } } extension Int: RealmOptionalType {} extension Int8: RealmOptionalType {} extension Int16: RealmOptionalType {} extension Int32: RealmOptionalType {} extension Int64: RealmOptionalType {} extension Float: RealmOptionalType {} extension Double: RealmOptionalType {} extension Bool: RealmOptionalType {} /** A `RealmOptional` instance represents an optional value for types that can't be directly declared as `@objc` in Swift, such as `Int`, `Float`, `Double`, and `Bool`. To change the underlying value stored by a `RealmOptional` instance, mutate the instance's `value` property. */ public final class RealmOptional: RLMOptionalBase { /// The value the optional represents. public var value: Value? { get { return underlyingValue.map(dynamicBridgeCast) } set { underlyingValue = newValue.map(dynamicBridgeCast) } } /** Creates a `RealmOptional` instance encapsulating the given default value. - parameter value: The value to store in the optional, or `nil` if not specified. */ public init(_ value: Value? = nil) { super.init() self.value = value } }