2012-10-07 3 views
0

IBAForms를 사용하여 프로젝트의 간단한 양식을 만들고 필드에서 값을 가져 오는 것 외에는 거의 모든 것을 수행했습니다. 이 코드가 있습니다iOS : valueForKeyPath에서 값 가져 오기

NSLog(@"SUBMIT"); 
id values = [[self formDataSource] modelValueForKeyPath:@"diabetePickListItem"]; 
for (id key in values){ 
    id values = [values objectForKey:key]; 

    NSString *keyString = (NSString *)key; 
    NSLog(@"%@",keyString); 
    NSString *valueString = (NSString *)values; 
    NSLog(@"%@",valueString); 
} 

NSLog(@"diabetes %@", values); 

을 그리고 그것은 나에게 콘솔에서이 OUPUT 제공 :

2012-10-07 07:02:37.145 BigBlueTest[64483:10403] SUBMIT 
2012-10-07 07:02:37.147 BigBlueTest[64483:10403] Yes 
2012-10-07 07:02:37.148 BigBlueTest[64483:10403] (null) 
2012-10-07 07:02:37.150 BigBlueTest[64483:10403] diabetes {(
Yes 
)} 

내가 뭘 이해하지 못하는 것은 내가에서 반환 된 값에서 키를 얻을 수있는 방법입니다 modelValueForKeyPath 메소드. 나는 단지 빠른 열거없이 'Yes'또는 'No'값을 얻고 싶습니다. 나는이 코드에서 내가 무엇을 놓치고 있는지 정말로 모른다. 어떤 도움이라도 대단히 감사하겠습니다. 미리 감사드립니다.

편집 :

문제는 내가 objectAtIndex를 사용하려고하면 그것은 나를 준다이다 - [__ NSCFSet objectAtIndex이 :] : 인식 할 수없는 선택기 인스턴스 오류로 보냈다. 내가 valueForKeypath를 사용하는 경우

NSLog(@"%@",_formValues); 

2012-10-08 11:27:48.524 BigBlueTest[17285:10403] { 
    activityPickListItem = "{(\n Running/jogging\n)}"; 
    bloodAfter = 60; 
    bloodBefore = 58; 
    diabetePickListItem = "{(\n Yes\n)}"; 
    durationPickListItem = "{(\n 10 or less\n)}"; 
    intensityPickListItem = "{(\n Moderate\n)}"; 
    lowGlucoseSyntom = "{(\n No\n)}"; 
    pickInsulinUse = "{(\n Yes\n)}"; 
    pickMeasureUnit = "{(\n mmol/L\n)}"; 
    recentMealPickListItem = "{(\n 30 minutes ago\n)}"; 
} 

다음 내가 값을 얻을 : 내가 작업하고있어 applicacion 내가 완전히 양식을 작성하고 내가이 출력을 얻을 수있는 값의 내용을 인쇄하는 경우, 간단한 정보를 수집하는 양식을 포함 이 형식 {(값)}. 문자열 값을 가져 오는 방법을 찾지 못했습니다. NSDictionary 및 NSArray에서 시도한 메서드가 실패했습니다. 답장을 보내 주셔서 감사합니다.

답변

0

저는 Objective C에서 베테랑이 아니지만 값이 배열이 아니어야합니까? 그리고이 문제는 "(NSString *)values"형변환 문과 관련이있는 것으로 보입니다.이 문구는 실제로 드문 것처럼 보입니다. 나는 당신이 을 반환하기 때문에 다른 접근법을 가지고 NSString의 값을 변환해야한다고 생각합니다. 어쩌면 당신은 NSString *valueString = [NSString stringWithString:[values objectAtIndex:yourIndex] 같은 시도 (이상의 개체에 대한 NSRange 사용)

0

내가 IBAForms에 익숙하지 오전하지만 값이 당신에게 컬렉션을주고있다 것 같습니다 수 있습니다. 줄 ID 값 바로 뒤에 중단 점을 설정하고 값으로 반환되는 것을 살펴볼 것을 제안합니다. 상황에 맞는 도구 팁이 XCode에서 작동하지 않는 경우가 있습니다. 이 경우 po values을 디버그 창에 입력 할 수 있습니다. 그것은 당신에게 당신이 상대하고있는 더 나은 아이디어를 줄 것입니다.

+0

감사합니다. 귀하의 답변은 나에게 무슨 일이 일어나고 있는지에 대한 정보를 찾는 데 많은 도움이되었습니다. 그러나 나는 그저 가치를 얻지 못했습니다. 그것은 내가 여기서 가치를 얻을 수있는 방법을 찾을 수 없다는 것을 당황스럽게 만듭니다 : {(value)}. objectAtIndex가 작동하지 않습니다. 값은 id 유형입니다. –

+0

이것을 시도해보십시오 : BOOL answer = [[value objectAtIndex : 0] boolValue]]; –