1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- ////////////////////////////////////////////////////////////////////////////
- //
- // Copyright 2022 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/RLMObjectBase.h>
- RLM_HEADER_AUDIT_BEGIN(nullability, sendability)
- @class RLMObjectSchema, RLMPropertyDescriptor, RLMRealm;
- /**
- `RLMAsymmetricObject` is a base class used to define asymmetric Realm objects.
- Asymmetric objects can only be created using the `createInRealm:`
- function, and cannot be added, removed or queried.
- When created, asymmetric objects will be synced unidirectionally to the MongoDB
- database and cannot be accessed locally.
- Linking an asymmetric object within an `Object` is not allowed and will throw an error.
- The property types supported on `RLMAsymmetricObject` are the same as for `RLMObject`,
- except for that asymmetric objects can only link to embedded objects, so `RLMObject`
- and `RLMArray<RLMObject>` properties are not supported (`RLMEmbeddedObject` and
- `RLMArray<RLEmbeddedObject>` *are*).
- */
- @interface RLMAsymmetricObject : RLMObjectBase
- #pragma mark - Creating & Initializing Objects
- /**
- Creates an unmanaged instance of a Realm object.
- */
- - (instancetype)init NS_DESIGNATED_INITIALIZER;
- /**
- Creates an unmanaged instance of a Realm object.
- Pass in an `NSArray` or `NSDictionary` instance to set the values of the object's properties.
- */
- - (instancetype)initWithValue:(id)value;
- /**
- Returns the class name for a Realm object subclass.
- @warning Do not override. Realm relies on this method returning the exact class
- name.
- @return The class name for the model class.
- */
- + (NSString *)className;
- /**
- Creates an Asymmetric object, which will be synced unidirectionally and
- cannot be queried locally.
- Objects created using this method will not be added to the Realm.
- @warning This method may only be called during a write transaction.
- @warning This method always returns nil.
- @param realm The Realm to be used to create the asymmetric object..
- @param value The value used to populate the object.
- @return Returns `nil`
- */
- + (instancetype)createInRealm:(RLMRealm *)realm withValue:(id)value;
- #pragma mark - Properties
- /**
- The object schema which lists the managed properties for the object.
- */
- @property (nonatomic, readonly) RLMObjectSchema *objectSchema;
- #pragma mark - Dynamic Accessors
- /// :nodoc:
- - (nullable id)objectForKeyedSubscript:(NSString *)key;
- /// :nodoc:
- - (void)setObject:(nullable id)obj forKeyedSubscript:(NSString *)key;
- @end
- RLM_HEADER_AUDIT_END(nullability, sendability)
|