문제

오류가 있습니다 -[NSCFString StringValue] : 인스턴스로 전송 된 인스턴스 0x1578C이 코드를 실행할 때 전송되지 않은 선택기는 내가하고있는 일을 이해하지 못합니다.

self.searchValues= [[NSMutableArray alloc] init];
name=@"Bob";
if(self.name!=nil)
   [searchValues addObject: [NSMutableDictionary dictionaryWithObjectsAndKeys:@"Name",@"Label",self.name,@"Value",nil]];
NSLog(@"Array value : %s",[[[searchValues objectAtIndex:0] objectForKey:@"Value"] stringValue]);
도움이 되었습니까?

해결책

먼저 [... StringValue] 메시지를 삭제할 수 있습니다. 그 객체는 이미 문자열입니다. 둘째, nsstring 객체의 경우 %s 대신 %@을 사용해야합니다.

참고 : %@는 그 문제에 대해 모든 객체에 대해 작동합니다. 노력하다

NSLog(@"Array: %@", searchValues);

날 믿어, 시도해 볼 가치가 있습니다.

다른 팁

NSString에는 "StringValue"메소드가 없으므로 오류가 없습니다.

C-String으로 값을 정말로 원한다면 원하는 방법은 UTF8String입니다. 그러나 로깅 케이스의 경우 %s를 %@로 변경하고 nsstring 객체를 직접 로그인해야합니다.

사용할 필요가 없습니다 stringValue 이 경우 (편집하다: 실제로 다른 사람들이 게시 한 것처럼 오류입니다. NSString A가 없습니다 stringValue 방법).

사전에서 나오는 대상은 이미 NSString. 당신이해야 할 일은 NSLog 기능을 적절한 코코아 물체로 처리하는 기능. 그 코드는입니다 %@, 아니다 %s, 부터 %s C 스타일 스트링 용입니다.

다음은 다음과 같습니다.

self.searchValues = [[NSMutableArray alloc] init];
name=@"Bob";
if(self.name!=nil)
{
    [searchValues addObject: [NSMutableDictionary
           dictionaryWithObjectsAndKeys:@"Name", @"Label",
                                        self.name,@"Value",
                                       nil]];

    NSLog(@"Array value: %@", [[searchValues objectAtIndex:0]
                                 objectForKey:@"Value"]);
}

이름 변수에 대한 속성이있는 경우 Self.Name을 사용하여 작업을 수행 할 때 이름을 사용하십시오. 그렇지 않으면 속성을 선언 할 의미가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top