RLMObjectStore.h
3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
////////////////////////////////////////////////////////////////////////////
//
// Copyright 2014 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 <Foundation/Foundation.h>
#ifdef __cplusplus
extern "C" {
#endif
@class RLMRealm, RLMSchema, RLMObjectSchema, RLMObjectBase, RLMResults, RLMProperty;
//
// Accessor Creation
//
// create or get cached accessors for the given schema
void RLMRealmCreateAccessors(RLMSchema *schema);
// Clear the cache of created accessor classes
void RLMClearAccessorCache();
//
// Options for object creation
//
typedef NS_OPTIONS(NSUInteger, RLMCreationOptions) {
// Normal object creation
RLMCreationOptionsNone = 0,
// If the property is a link or array property, upsert the linked objects
// if they have a primary key, and insert them otherwise.
RLMCreationOptionsCreateOrUpdate = 1 << 0,
// Allow standalone objects to be promoted to persisted objects
// if false objects are copied during object creation
RLMCreationOptionsPromoteStandalone = 1 << 1,
};
//
// Adding, Removing, Getting Objects
//
// add an object to the given realm
void RLMAddObjectToRealm(RLMObjectBase *object, RLMRealm *realm, bool createOrUpdate);
// delete an object from its realm
void RLMDeleteObjectFromRealm(RLMObjectBase *object, RLMRealm *realm);
// deletes all objects from a realm
void RLMDeleteAllObjectsFromRealm(RLMRealm *realm);
// get objects of a given class
RLMResults *RLMGetObjects(RLMRealm *realm, NSString *objectClassName, NSPredicate *predicate) NS_RETURNS_RETAINED;
// get an object with the given primary key
id RLMGetObject(RLMRealm *realm, NSString *objectClassName, id key) NS_RETURNS_RETAINED;
// create object from array or dictionary
RLMObjectBase *RLMCreateObjectInRealmWithValue(RLMRealm *realm, NSString *className, id value, bool createOrUpdate) NS_RETURNS_RETAINED;
//
// Accessor Creation
//
// switch List<> properties from being backed by standalone RLMArrays to RLMArrayLinkView
void RLMInitializeSwiftAccessorGenerics(RLMObjectBase *object);
#ifdef __cplusplus
}
namespace realm {
class Table;
template<typename T> class BasicRowExpr;
using RowExpr = BasicRowExpr<Table>;
}
// Create accessors
RLMObjectBase *RLMCreateObjectAccessor(RLMRealm *realm,
RLMObjectSchema *objectSchema,
NSUInteger index) NS_RETURNS_RETAINED;
RLMObjectBase *RLMCreateObjectAccessor(RLMRealm *realm,
RLMObjectSchema *objectSchema,
realm::RowExpr row) NS_RETURNS_RETAINED;
#endif