2016-11-21 8 views
0

하나 이상의 개체가있는 데이터베이스 사전 NSNull이 있습니다. 앞으로 앱 충돌로 그와 함께 일할 수있는 방법이 없습니다. 나는 사전에서 NSNull 목적, 방법 removeObjectForKey하지만이 작업을 수행하는 어떤 시도를 제거하는 여러 가지 방법을 시도 내가받을 이유의 배열 오류 :하나 이상의 개체가있는 데이터베이스 사전에서 얻고 있습니다. NSNull

- [__ NSArrayM removeObjectForKey:]: unrecognized selector sent to an instance 

내가 방법 배열에 의해 이러한 개체를 제거 할 수 없습니다 removeObjectAtIndex 이 사전으로. 이 작업을 수행하는 방법은 유형별로 이러한 개체를 제거하는 것입니다. 그렇게 할 수 있습니까? NSNull 유형과 일치하는 사전에서 객체를 제거 할 수 있습니까? 아니면이 문제에 대한 또 다른 해결책이 있을까요?

도움 주셔서 감사합니다.

+2

원본 '사전'또는 '배열'의 내용을 게시하십시오. – Frankie

+0

'NSArrayM'은 분명히 사전이 아닌 가변 배열 ('NSMutableArray')입니다. 배열은 인덱스 기반이며, 사전은 키 기반입니다. – vadian

답변

0

이 루프 (this post에서 수정)는 NSnull 항목을 원하는 문자열로 대체하는 데 도움이됩니다 (필자는 컴퓨터 앞에 없습니다).

for(NSString *key in yourDictionary) { 
    id dictionaryEntry= [yourDictionary objectForKey:key]; 
    if(!dictionaryEntry) { 
    [newDictionary setObject:@"string" forKey:key]; 
    } else { 
    [newDictionary setObject:[yourDictionary objectForKey:key] forKey:key]; 
    } 
} 
0

당신 말 :

And I can not remove these objects by method the array "removeObjectAtIndex" as this dictionary.

불행하게도 당신의 오류 :

[__ NSArrayM removeObjectForKey:]: unrecognized selector

당신과 함께 동의하지 않습니다. 배열이 있습니다. 그리고 removeObjectAtIndex을 사용할 수없는 이유는 불변하기 때문입니다.

+0

문제는 내가 데이터베이스 개체를 사전에 보관하고 사전을 반환한다는 것입니다. 하지만 nsnull을 얻으면 배열을 반환합니다 –

+0

그러면 다른 문제가있는 것 같습니다. 위의 문제에 대한 해결책은 배열에서 사전 메서드를 호출하려고한다는 것입니다. – Frankie

0

당신은

Make sure your array should be mutable. Then you can use removeObjectAtIndex.

removeObjectAtIndex

에 대한 배열 또한

Note down that you cannot remove a key from an array. Than this error is obvious.

에서 키를 제거는 당신을 위해 작동 바랍니다.