NSMutableArray에서 문자열을 얻는다 : 왜 작동하지 않습니까?
-
05-07-2019 - |
문제
오류가 있습니다 -[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을 사용하여 작업을 수행 할 때 이름을 사용하십시오. 그렇지 않으면 속성을 선언 할 의미가 없습니다.
제휴하지 않습니다 StackOverflow