RLMListBase.mm 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright 2015 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. #import "RLMListBase.h"
  19. #import "RLMArray_Private.hpp"
  20. #import "RLMObservation.hpp"
  21. @interface RLMArray (KVO)
  22. - (NSArray *)objectsAtIndexes:(__unused NSIndexSet *)indexes;
  23. @end
  24. @implementation RLMListBase {
  25. std::unique_ptr<RLMObservationInfo> _observationInfo;
  26. }
  27. - (instancetype)initWithArray:(RLMArray *)array {
  28. self = [super init];
  29. if (self) {
  30. __rlmArray = array;
  31. }
  32. return self;
  33. }
  34. - (id)valueForKey:(NSString *)key {
  35. return [__rlmArray valueForKey:key];
  36. }
  37. - (id)valueForKeyPath:(NSString *)keyPath {
  38. return [__rlmArray valueForKeyPath:keyPath];
  39. }
  40. - (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id __unsafe_unretained [])buffer count:(NSUInteger)len {
  41. return [__rlmArray countByEnumeratingWithState:state objects:buffer count:len];
  42. }
  43. - (NSArray *)objectsAtIndexes:(NSIndexSet *)indexes {
  44. return [__rlmArray objectsAtIndexes:indexes];
  45. }
  46. - (void)addObserver:(id)observer
  47. forKeyPath:(NSString *)keyPath
  48. options:(NSKeyValueObservingOptions)options
  49. context:(void *)context {
  50. RLMEnsureArrayObservationInfo(_observationInfo, keyPath, __rlmArray, self);
  51. [super addObserver:observer forKeyPath:keyPath options:options context:context];
  52. }
  53. @end