2013-09-25 4 views
0

배열의 변경을 감지하기 위해 KVC 호환 가변 배열을 만들려고합니다. 내 헤더 파일에서변경 가능한 배열에 KVC 접근자를 사용하는 방법 Objective-C

는 내가 가진 : KVC에 대한

@interface ObjectDataModel : NSObject{ 
@private 
    NSMutableArray *objectArray; 
} 

@property (nonatomic, strong) NSArray *objectArray; 

- (NSArray *)objectArray; 
- (NSUInteger)objectArrayCount; 
- (id)objectInFilePathsArrayAtIndex:(NSUInteger)index; 
- (id)objectArrayAtIndexes:(NSIndexSet *)indexes; 
- (void)insertObject:(id)val inObjectArrayAtIndex:(NSUInteger)index; 
- (void)insertObjectArray:(NSArray *)array atIndexes:(NSIndexSet *)indexes; 
- (void)removeObjectFromObjectArrayAtIndex:(NSUInteger)index; 
- (void)removeObjectArrayAtIndexes:(NSIndexSet *)indexes; 
- (void)replaceObjectInObjectArrayAtIndex:(NSUInteger)index withObject:(id)object; 
- (void)replaceObjectArrayAtIndexes:(NSIndexSet *)indexes withObjectArray:(NSArray *)array; 



@end 

전형적인 접근 방법을 문서에 표시된. 내가 주 파일의 접근 방법을 구현할 때,이 다음과 같은 기능은 선택기로 호출을 인식 해달라고 :

@synthesize filePathsArray = _filePathsArray; 

- (id)init 
{ 
    self = [super init]; 
    if (self) { 

    } 
    return self; 
} 

// 
- (void)insertObject:(id)val inObjectArrayAtIndex:(NSUInteger)index 
{ 
    [self.objectArray insertObject:val atIndex:index]; 
} 

- (void)insertObjectArray:(NSArray *)array atIndexes:(NSIndexSet *)indexes{ 
    [self.objectArray insertObjects:array atIndexes:indexes]; 
} 

- (void)removeObjectFromObjectArrayAtIndex:(NSUInteger)index{ 
    [self.objectArray removeObjectAtIndex:index]; 
} 

- (void)removeObjectArrayAtIndexes:(NSIndexSet *)indexes{ 
    [self.objectArray removeObjectsAtIndexes:indexes]; 
} 

- (void)replaceObjectInObjectArrayAtIndex:(NSUInteger)index withObject:(id)object{ 
    [self.objectArray replaceObjectAtIndex:index withObject:object]; 
} 

- (void)replaceObjectArrayAtIndexes:(NSIndexSet *)indexes withObjectArray:(NSArray *)array{ 
    [self.objectArray replaceObjectsAtIndexes:indexes withObjects:array]; 
} 

오류는 "NSArray를위한 눈에 보이는 @interface는"선택기를 선언하지 : 셀렉터 각 '' 여기 함수에서. 나는 왜이 선택자가 존재하지 않는지 혼란스럽고 확신하지 못한다. 도움을 주시면 감사하겠습니다. 헤더 파일에있는 다른 4 개의 함수는 ok입니다.

답변

1

당신은 불변

@property (nonatomic, strong) NSArray *objectArray; 

있습니다. 문제 [self.object 배열 removeObjectsAtIndexes : 인덱스] 같은조차 인식되지 않습니다

@property (nonatomic, strong) NSMutableArray *objectArray; 

대신

+0

나는 여전히 "NSArray를위한 눈에 보이는 @interface 선언하지 선택"을 얻을 수 있습니다. – Dan68am

+0

남자, NSArutableArray를 작성했지만 NSArray는 작성하지 않았습니다. NSArray 유형에 대해 여전히 오류가 발생합니다. 당신의 objectArray가 NSArray처럼 정의 된 모든 장소를 고려하십시오 - .h 파일의 @interface, .m 파일의 클래스 확장 - -removeObjectsAtIndexes를위한 NSMutableArray가되어야합니다 : –

관련 문제