added iOS source code
[wl-app.git] / iOS / Pods / Realm / include / RLMProperty.h
1 ////////////////////////////////////////////////////////////////////////////
2 //
3 // Copyright 2014 Realm Inc.
4 //
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 ////////////////////////////////////////////////////////////////////////////
18
19 #import <Realm/RLMConstants.h>
20
21 NS_ASSUME_NONNULL_BEGIN
22
23 /// :nodoc:
24 @protocol RLMInt @end
25 /// :nodoc:
26 @protocol RLMBool @end
27 /// :nodoc:
28 @protocol RLMDouble @end
29 /// :nodoc:
30 @protocol RLMFloat @end
31 /// :nodoc:
32 @protocol RLMString @end
33 /// :nodoc:
34 @protocol RLMDate @end
35 /// :nodoc:
36 @protocol RLMData @end
37
38 /// :nodoc:
39 @interface NSNumber ()<RLMInt, RLMBool, RLMDouble, RLMFloat>
40 @end
41
42 /**
43  `RLMProperty` instances represent properties managed by a Realm in the context
44  of an object schema. Such properties may be persisted to a Realm file or
45  computed from other data from the Realm.
46
47  When using Realm, `RLMProperty` instances allow performing migrations and
48  introspecting the database's schema.
49
50  These property instances map to columns in the core database.
51  */
52 @interface RLMProperty : NSObject
53
54 #pragma mark - Properties
55
56 /**
57  The name of the property.
58  */
59 @property (nonatomic, readonly) NSString *name;
60
61 /**
62  The type of the property.
63
64  @see `RLMPropertyType`
65  */
66 @property (nonatomic, readonly) RLMPropertyType type;
67
68 /**
69  Indicates whether this property is indexed.
70
71  @see `RLMObject`
72  */
73 @property (nonatomic, readonly) BOOL indexed;
74
75 /**
76  For `RLMObject` and `RLMArray` properties, the name of the class of object stored in the property.
77  */
78 @property (nonatomic, readonly, copy, nullable) NSString *objectClassName;
79
80 /**
81  For linking objects properties, the property name of the property the linking objects property is linked to.
82  */
83 @property (nonatomic, readonly, copy, nullable) NSString *linkOriginPropertyName;
84
85 /**
86  Indicates whether this property is optional.
87  */
88 @property (nonatomic, readonly) BOOL optional;
89
90 /**
91  Indicates whether this property is an array.
92  */
93 @property (nonatomic, readonly) BOOL array;
94
95 #pragma mark - Methods
96
97 /**
98  Returns whether a given property object is equal to the receiver.
99  */
100 - (BOOL)isEqualToProperty:(RLMProperty *)property;
101
102 @end
103
104
105 /**
106  An `RLMPropertyDescriptor` instance represents a specific property on a given class.
107  */
108 @interface RLMPropertyDescriptor : NSObject
109
110 /**
111  Creates and returns a property descriptor.
112
113  @param objectClass  The class of this property descriptor.
114  @param propertyName The name of this property descriptor.
115  */
116 + (instancetype)descriptorWithClass:(Class)objectClass propertyName:(NSString *)propertyName;
117
118 /// The class of the property.
119 @property (nonatomic, readonly) Class objectClass;
120
121 /// The name of the property.
122 @property (nonatomic, readonly) NSString *propertyName;
123
124 @end
125
126 NS_ASSUME_NONNULL_END