You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
171 lines
6.0 KiB
171 lines
6.0 KiB
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// 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
|
|
|
|
/**
|
|
`ObjectiveCSupport` is a class providing methods for Swift/Objective-C interoperability.
|
|
|
|
With `ObjectiveCSupport` you can either retrieve the internal ObjC representations of the Realm objects,
|
|
or wrap ObjC Realm objects with their Swift equivalents.
|
|
|
|
Use this to provide public APIs that support both platforms.
|
|
|
|
:nodoc:
|
|
**/
|
|
public final class ObjectiveCSupport {
|
|
|
|
/// Convert a `Results` to a `RLMResults`.
|
|
public static func convert<T>(object: Results<T>) -> RLMResults<AnyObject> {
|
|
return object.rlmResults
|
|
}
|
|
|
|
/// Convert a `RLMResults` to a `Results`.
|
|
public static func convert(object: RLMResults<AnyObject>) -> Results<Object> {
|
|
return Results(object)
|
|
}
|
|
|
|
/// Convert a `List` to a `RLMArray`.
|
|
public static func convert<T>(object: List<T>) -> RLMArray<AnyObject> {
|
|
return object._rlmArray
|
|
}
|
|
|
|
/// Convert a `RLMArray` to a `List`.
|
|
public static func convert(object: RLMArray<AnyObject>) -> List<Object> {
|
|
return List(rlmArray: object)
|
|
}
|
|
|
|
/// Convert a `LinkingObjects` to a `RLMResults`.
|
|
public static func convert<T>(object: LinkingObjects<T>) -> RLMResults<AnyObject> {
|
|
return object.rlmResults
|
|
}
|
|
|
|
/// Convert a `RLMLinkingObjects` to a `Results`.
|
|
public static func convert(object: RLMLinkingObjects<RLMObject>) -> Results<Object> {
|
|
return Results(object)
|
|
}
|
|
|
|
/// Convert a `Realm` to a `RLMRealm`.
|
|
public static func convert(object: Realm) -> RLMRealm {
|
|
return object.rlmRealm
|
|
}
|
|
|
|
/// Convert a `RLMRealm` to a `Realm`.
|
|
public static func convert(object: RLMRealm) -> Realm {
|
|
return Realm(object)
|
|
}
|
|
|
|
/// Convert a `Migration` to a `RLMMigration`.
|
|
public static func convert(object: Migration) -> RLMMigration {
|
|
return object.rlmMigration
|
|
}
|
|
|
|
/// Convert a `RLMMigration` to a `Migration`.
|
|
public static func convert(object: RLMMigration) -> Migration {
|
|
return Migration(object)
|
|
}
|
|
|
|
/// Convert a `ObjectSchema` to a `RLMObjectSchema`.
|
|
public static func convert(object: ObjectSchema) -> RLMObjectSchema {
|
|
return object.rlmObjectSchema
|
|
}
|
|
|
|
/// Convert a `RLMObjectSchema` to a `ObjectSchema`.
|
|
public static func convert(object: RLMObjectSchema) -> ObjectSchema {
|
|
return ObjectSchema(object)
|
|
}
|
|
|
|
/// Convert a `Property` to a `RLMProperty`.
|
|
public static func convert(object: Property) -> RLMProperty {
|
|
return object.rlmProperty
|
|
}
|
|
|
|
/// Convert a `RLMProperty` to a `Property`.
|
|
public static func convert(object: RLMProperty) -> Property {
|
|
return Property(object)
|
|
}
|
|
|
|
/// Convert a `Realm.Configuration` to a `RLMRealmConfiguration`.
|
|
public static func convert(object: Realm.Configuration) -> RLMRealmConfiguration {
|
|
return object.rlmConfiguration
|
|
}
|
|
|
|
/// Convert a `RLMRealmConfiguration` to a `Realm.Configuration`.
|
|
public static func convert(object: RLMRealmConfiguration) -> Realm.Configuration {
|
|
return .fromRLMRealmConfiguration(object)
|
|
}
|
|
|
|
/// Convert a `Schema` to a `RLMSchema`.
|
|
public static func convert(object: Schema) -> RLMSchema {
|
|
return object.rlmSchema
|
|
}
|
|
|
|
/// Convert a `RLMSchema` to a `Schema`.
|
|
public static func convert(object: RLMSchema) -> Schema {
|
|
return Schema(object)
|
|
}
|
|
|
|
/// Convert a `SortDescriptor` to a `RLMSortDescriptor`.
|
|
public static func convert(object: SortDescriptor) -> RLMSortDescriptor {
|
|
return object.rlmSortDescriptorValue
|
|
}
|
|
|
|
/// Convert a `RLMSortDescriptor` to a `SortDescriptor`.
|
|
public static func convert(object: RLMSortDescriptor) -> SortDescriptor {
|
|
return SortDescriptor(keyPath: object.keyPath, ascending: object.ascending)
|
|
}
|
|
|
|
/// Convert a `SyncCredentials` to a `RLMSyncCredentials`.
|
|
public static func convert(object: SyncCredentials) -> RLMSyncCredentials {
|
|
return RLMSyncCredentials(object)
|
|
}
|
|
|
|
/// Convert a `RLMSyncCredentials` to a `SyncCredentials`.
|
|
public static func convert(object: RLMSyncCredentials) -> SyncCredentials {
|
|
return SyncCredentials(object)
|
|
}
|
|
|
|
/// Convert a `RLMShouldCompactOnLaunchBlock` to a Realm Swift compact block.
|
|
public static func convert(object: @escaping RLMShouldCompactOnLaunchBlock) -> (Int, Int) -> Bool {
|
|
return { totalBytes, usedBytes in
|
|
return object(UInt(totalBytes), UInt(usedBytes))
|
|
}
|
|
}
|
|
|
|
/// Convert a Realm Swift compact block to a `RLMShouldCompactOnLaunchBlock`.
|
|
public static func convert(object: @escaping (Int, Int) -> Bool) -> RLMShouldCompactOnLaunchBlock {
|
|
return { totalBytes, usedBytes in
|
|
return object(Int(totalBytes), Int(usedBytes))
|
|
}
|
|
}
|
|
|
|
/// Convert a `SyncConfiguration` to a `RLMSyncConfiguration`.
|
|
public static func convert(object: SyncConfiguration) -> RLMSyncConfiguration {
|
|
return object.asConfig()
|
|
}
|
|
|
|
/// Convert a `RLMSyncConfiguration` to a `SyncConfiguration`.
|
|
public static func convert(object: RLMSyncConfiguration) -> SyncConfiguration {
|
|
return SyncConfiguration(config: object)
|
|
}
|
|
|
|
/// Convert a `RLMSyncSubscription` to a `SyncSubscription`.
|
|
public static func convert(object: RLMSyncSubscription) -> SyncSubscription<Object> {
|
|
return SyncSubscription(object)
|
|
}
|
|
}
|
|
|