相关疑难解决方法(0)

mutableArrayValueForKey的KVC搜索模式是什么?

我试图更好地理解Cocoa的键值编码(KVC)机制.我已经阅读了Apple的Key-Value Programming Guide,但对于某些KVC方法如何搜索密钥仍然有点困惑.特别是mutableArrayValueForKey : .

下面我将解释我如何理解valueForKey:KVC"getters"的工作方式.然后我将讨论有关mutableArrayValueForKey的问题.


有七种不同的"getter"KVC方法:

- (id)valueForKey:(NSString *)key;
- (id)valueForKeyPath:(NSString *)keyPath;
- (NSDictionary *)dictionaryWithValuesForKeys:(NSArray *)keys;
- (NSMutableArray *)mutableArrayValueForKey:(NSString *)key;
- (NSMutableArray *)mutableArrayValueForKeyPath:(NSString *)keyPath;
- (NSMutableSet *)mutableSetValueForKey:(NSString *)key;
- (NSMutableSet *)mutableSetValueForKeyPath:(NSString *)keyPath;
Run Code Online (Sandbox Code Playgroud)

在Property中搜索Value(名为myKey)时,Apple的文档声明valueForKey:这样搜索:

  1. 在接收器内尝试-getMyKey,-myKey和-isMyKey(按此顺序)
  2. 如果没有找到,它会尝试这些有序的,多对多的getter(NSArray):

    // Required:
    - (NSUInteger)countOfMyKey;
    
    // Requires At Least One:
    - (id)objectInMyKeyAtIndex:(NSUInteger)index;
    - (NSArray *)myKeyAtIndexes:(NSIndexSet *)indexes;
    
    // Optional (improves performance):
    - (void)getMyKey:(KeyClass **)buffer range:(NSRange)inRange;
    
    Run Code Online (Sandbox Code Playgroud)
  3. 接下来,它尝试这些无序的,多对多的getter(NSSet):

    - (NSUInteger)countOfMyKey;
    - (NSEnumerator *)enumeratorOfMyKey; …
    Run Code Online (Sandbox Code Playgroud)

cocoa key-value-coding nsmutablearray

16
推荐指数
1
解决办法
4963
查看次数

标签 统计

cocoa ×1

key-value-coding ×1

nsmutablearray ×1