2011-12-15 3 views
1

ABAdressBook API & NSFileManager을 사용하는 앱이 있습니다.공개 API를 사용하여 iphone jailbroken 개발

내가 명령 줄에서 응용 프로그램을 실행할 때 - API가 AddressBook/NSFileManager 정보를 검색하는 것으로 보이지 않지만 스프링판에서 실행할 때 필요한 정보가 표시됩니다.

내 앱이 명령 줄에서 실행될 때 UI가 없기 때문에 그렇습니까?

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool 
    { 
     printf("HELLO TEST\n");  
     NSLog(@"---------"); 
     NSMutableArray* dbList = [[NSMutableArray alloc] init]; 

     NSFileManager *fileManager = [NSFileManager defaultManager]; 
     NSLog(@"file manager address is %@",fileManager); 
     NSDirectoryEnumerator *dirnum = [fileManager enumeratorAtPath: @"/private/"]; 
     NSLog(@"dirNum is %@",dirnum); 
     NSString *nextItem = [NSString string]; 

     while((nextItem = [dirnum nextObject])) { 
      if ([[nextItem pathExtension] isEqualToString: @"db"] || 
       [[nextItem pathExtension] isEqualToString: @"sqlitedb"]) { 
       if ([fileManager isReadableFileAtPath:nextItem]) { 
        [dbList addObject:nextItem]; 

        NSLog(@"%@", nextItem); 
       } 
      } 
     } 
    } 
} 

편집

: 나는 다음과 같은 선택에 이르기까지 문제를 고정 : [파일 관리자 isReadableFileAtPath : nextItem] 내가 발판에서이 기능을 실행할 때 - 그것이 사실 반환 - 파일의 몇 가지에 대한 ...

내가 명령 줄에서 실행할 때 - 루트 권한으로 앱을 실행하고 있지만 false를 모든 파일에 반환합니다.

이 동작이 변경 될 수있는 원인은 무엇입니까?

감사합니다,

Itay

답변

1

모두 ABAddressBookNSFileManager 고유, 공유 객체를 반환하는 클래스 메소드를 가지고 - 코드에서 위, [NSFileManager defaultManager]에 대한 호출에 따르면, "파일 시스템에 대한 기본 NSFileManager 객체"검색 문서로 이동합니다. 명령 줄에서 응용 프로그램을 실행할 때 이 공유 객체을 초기화하는 코드의 일부 또는 전체를 실행하지 않았을 수 있습니다. 당신은 심지어 nil 클래스 메서드에서 돌아올 수 있습니다.

그렇다면 클래스 메서드를 사용하여 공유 개체를 반환하는 대신 자신의 개체 (즉, [[NSFileManager alloc] init] 또는 [ABAddressBook addressBook])를 만들어이 문제를 해결할 수 있습니다.

+0

[ABAddressBook addressBook]이 (가) 장치의 주소록을 반환합니까? 주소록 연락처가 가득 찼습니까? 아니면 빈 것일까요? –

+0

[ABAddressBook addressBook]을 호출 할 수 없다. 컴파일러가이 함수를 찾지 못한다. –

+0

'[ABAddressBook addressBook]'은 클래스 메소드입니다. 즉, 클래스 자체에서 호출하는 것입니다. 즉, 코드는 정확한 리터럴 문자열'[ABAddressBook addressBook]'을 사용해야합니다. '[myInstanceVariable addressBook]'이 작동하지 않습니다. 이 문서는'[ABAddressBook addressBook]'에 의해 반환 된 주소록이 기존 레코드를 검색하는 데 사용될 수 있는지 여부에 대해서는 조금 희미합니다. 주소록에 쓰고 저장하면 그 결과가 사용자의 주소록. –

관련 문제