2010-03-13 11 views
0

설명을 위해 최선을 다할 수 있도록 도움이 필요합니다. 그래서 그때가 내가있는 tableView가 설정 한가변 범위 문제, iPhone

NSArray *getValue(NSString *iosearch) 
{ 
    mach_port_t   masterPort; 
    CFTypeID    propID = (CFTypeID) NULL; 
    unsigned int   bufSize; 

    kern_return_t kr = IOMasterPort(MACH_PORT_NULL, &masterPort); 
    if (kr != noErr) return nil; 

    io_registry_entry_t entry = IORegistryGetRootEntry(masterPort); 
    if (entry == MACH_PORT_NULL) return nil; 

    CFTypeRef prop = IORegistryEntrySearchCFProperty(entry, kIODeviceTreePlane,  (CFStringRef) iosearch, nil, kIORegistryIterateRecursively); 
    if (!prop) return nil; 

    propID = CFGetTypeID(prop); 
    if (!(propID == CFDataGetTypeID())) 
    { 
     mach_port_deallocate(mach_task_self(), masterPort); 
     return nil; 
    } 

    CFDataRef propData = (CFDataRef) prop; 
    if (!propData) return nil; 

    bufSize = CFDataGetLength(propData); 
    if (!bufSize) return nil; 

    NSString *p1 = [[[NSString alloc] initWithBytes:CFDataGetBytePtr(propData)  length:bufSize encoding:1] autorelease]; 
    mach_port_deallocate(mach_task_self(), masterPort); 
    return [p1 componentsSeparatedByString:@"\0"]; 
} 



- (NSString *) serialnumber 
{ 
    NSArray *results = getValue(@"serial-number"); 
    if (results) return [results objectAtIndex:0]; 
    return nil; 
} 

- (NSString *) backlightlevel 
{ 
    NSArray *results = getValue(@"backlight-level"); 
    if (results) return [results objectAtIndex:0]; 
    return nil; 
} 

과 내 배열을 표시 할 : 나는이 모든 일에 근무하고 더 성공 (단지 학습!)

을 내가 가진 없었습니다

내 .H 파일에서
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {............. 
......................................................... 
cell.text = [results objectAtIndex:indexPath.row]; // error results undeclared here 
    return cell; 
} 

나는이 :

@interface UIDevice_IOKitExtensionsViewController : UIViewController { 
    IBOutlet UITableView *tblSimpleTable; 

    NSArray *results; 


} 

@property (nonatomic, retain) NSArray *results; 
- (NSString *) serialnumber; 
- (NSString *) backlightlevel; 

문제는 내가 위에 표시된대로 선언되지 않은 결과를 얻을 수 있습니다. 또한 일련 번호와 백라이트 레벨을 버튼 클릭이나로드시 표시하는 방법을 알 수 없습니다. 내 시도는 오류 : 'serialnumber'는이 함수에서 처음 사용되지 않고 경고와 같은 경고를 반환합니다. 'return'은 값을 반환하고 void를 반환합니다. 긴 질문에 사과드립니다!

많은 감사, 스튜어트

답변

0

어디 results를 선언입니까? 게시 한 코드에서 알 수없는 내용입니다. 데이터 소스로 사용하는 경우에는 ivar로 설정해야합니다. 그 의미가 무엇인지 모르는 경우, this은 iPhone 개발을 이해하고 싶다면 시작할 수있는 좋은 곳입니다.

+0

내 .h 파일에서 NSArray * 결과로 선언되었습니다. – Stumf

+0

언제 설정합니까? ivar로 선언 된 경우 컴파일 타임 오류가 발생하지 않지만 결과는 정의되지 않았거나 설정되지 않았거나 런타임에 오류가 발생합니다. 너 어느 쪽 이냐? –

+0

신고되지 않았지만 지금은 분류되어 있습니다. viewDidLoad 또는 buttonClick 내에서 디스플레이 스테이지 또는 두 NString 메서드 중 하나를 넣을 때 "undeclared"가 다시 나타납니다. 아마 기본적인 실수를하고 있거나 개념을 잘못 이해하고있을 것입니다. – Stumf

1

두 개의 클래스 수준 방법 (일련 번호 및 백라이트 레벨)에서 재 작성을 유지 했습니까? 예를 들어, 일련 번호는 다음과 같아야합니다.