2011-09-15 4 views
0

URL (JSON)의 정보가 있습니다. 셀 레이블에 대해 내 사전 [aCategory objectAtKey:@"names"]의 텍스트로 tableView를 쉽게 채 웁니다. 이제는 셀 이름 (카테고리)에 따라 해당 카테고리를 기반으로 나머지 텍스트를 가져 오기 위해 마지막 URL을 묻는 다른 테이블을 표시하려고합니다.objectAtKey 문자열을 NSDictionary에서 별도의 클래스에있는 NSString으로 설정하십시오.

그래서, [aCategory objectAtKey:@"ID"]에있는 ID가 문자열에 저장하고 다음 viewController에 URL을 넣길 원합니다. 현재 목표 생성 된 viewcontroller NSString * ID 채우려면 자동 생성 된 set 메서드를 사용하여 생성하려고합니다. 전화 할 때 [newView setID: [aCategory objectAtKey:@"ID"]입니다.

내 새로운보기 컨트롤러의 NSString ID는 비어 있지 않지만 실제로 "1"인지 "2"인지 확인하려고 할 때 /p2002 또는 이와 비슷한 것을 얻습니다. 그러나 원래 수업에서, 내가 cell.detailLabelText.text = [aCategory objectAtKey:@"ID"];라고 말하면 레이블은 정확하게 "1" "2" "3".. "14"등을 표시합니다 ....

그럼 어떻게 그 키에서 그 ID를 얻을 수 있습니까? 내 다른 viewcontroller 클래스에?

유효한 NSCFString 원인은 내가 isClass과 셀 detailLabelText을 사용하여 테스트했기 때문입니다.

+0

워크 스테이션으로 돌아 가면 코드를 입력하십시오. – MattyG

답변

0

나는 이것에 대해 확인하기 위해 자세한 내용이 필요하지만, 노트의 몇 ...

있는 NSString은 기본적으로 실제로 여러 클래스를 다른 클래스의 집합을 의미하는 클래스 클러스터를, 소위이라는 기본 프레임 워크는 당신은 당신이 기대하는 결과를 얻는되지 않을 수 있습니다

isKindOfClass: 

로 확인하는 경우 이것이 의미하는 사이에 ... 전환됩니다. NSObject의 isKindOfClass :에 대한 설명서를 확인하십시오.

그러나 걱정할 사항이 있는지 확실하지 않습니다. '\ p2002'(첫 문자가 u 일 수 있습니까?)와 같은 것을 보는 이유는 문자열의 현재 기본 표현 일 수 있습니다. 때로는 장치가 문자열의 내용을 메모리에 보관할 때 "1"또는 "2"와 똑같지 않습니다. 문제가 있음을 의미하지는 않습니다. 즉, 문자열이 메모리에 보관되는 방식이 다른 형태로되어 있다는 것을 의미합니다. 그래서 레이블에 "2"라고 표시 될 수 있지만 변수를 메모리에서 확인할 때 모양이 다릅니다.

(JSON을 처리 중이므로이 문자열은 UTF-8이라는 형식으로 인코딩됩니다.) 요점은 아무것도 잘못 될 수 없다는 것입니다.

실제 질문은 새로운보기 컨트롤러가 올바르게로드되고 있는지 여부입니다. 당신이 뭔가이 줄을 실행하면 새로운 뷰 컨트롤러의 방법 : 어쩌면있는 viewDidLoad에

NSLog(@"%@", stringID); 

이 콘솔에 stringID의 값을 인쇄합니다. 이 숫자가 이전 뷰 컨트롤러의 테이블 셀 레이블 수와 같으면 모든 것이 올바르게 전달 된 것입니다.

+0

답장을 보내 주셔서 대단히 감사합니다. 그러나 명시 적으로 말하지 않았음에도 불구하고이 언어가 고수준 언어 구문 아래의 레이어에 매우 익숙하므로 문자열을 표현한 것이라고 확신합니다. 나는 내보기가 올바르게로드되고 있지만 그것이 좋지 않을지라도 그보기 내에서 내 CHECK 문을 실행하고 있다는 긍정적이다.난 단지 명시적인 답변이나 적어도 명시적인 힌트를 원한다면 하나의 클래스에서 문자열을 다른 클래스로 가져 오는 방법에 관해서는 원래의 위치에서 JSON 응답 문자열로 채워진 사전에서 가져온 것입니다. – gma

+0

그래서 문제는 firstViewController에서 두 번째로 문자열 데이터를 이동하는 방법을 알지 못한다는 것입니다. 몇 가지 옵션이 있습니다. @property (비 원자, 사본)를 설정할 수 있습니다. NSString * stringID; 두 번째보기 컨트롤러에서 값을 JSON 사전의 값으로 설정하십시오. 이렇게하면 두 번째보기 컨트롤러에서 문자열의 다른 복사본을 메모리에 만듭니다. -initWithStringID : (NSString *) aStringID와 같은 이니셜 라이저를 만들 수도 있습니다. 문자열 데이터에 대한 참조를 복사하거나 유지한다면 값을 쉽게 전달할 수 있어야합니다. –

+0

네, 질문에 설명했듯이 다른 뷰 컨트롤러에서는 .h : NSString * ID와 같이 보입니다. @propery (nonatomic, retain) NSString * ID; PREVIOUS viewController에있는 사전에서 값을 가져옵니다. 나는 자동으로 생성 된 setID를 사용하려고합니다. [data], 올바르게 문자를 "2"또는 "1"로 표시 할 수 없습니다. 그 문자는 내가 요청하는 url 요청에 있어야하기 때문에 중요합니다. 하다. – gma

관련 문제