문제

나는 내가 쓰려고하는 간단한 iPhone 프로그램에서 여기에 명백한 것을 놓치고 있다고 확신하지만, 코드는 너무 기본적으로 보이기 때문에 무엇이 잘못되었는지 알 수 없습니다.

NSMutableDictionary를 사용하여 클래스 목록과 관련 파일 이름을 저장하려고합니다. 헤더 파일에서 사전을 선언합니다

@interface ClassList : UITableViewController {
NSString *homedirectory;
NSString *masterindexpath;
NSMutableDictionary *classFilenameGlossary;
NSMutableArray *listofclasses;
}

@property (retain, nonatomic) NSString *homedirectory;
@property (retain, nonatomic) NSString *masterindexpath;
@property (retain, nonatomic) NSMutableDictionary *classFilenameGlossary;
@property (retain, nonatomic) NSMutableArray *listofclasses;

물론 구현 파일에서 :

@implementation ClassList

@synthesize homedirectory;
@synthesize masterindexpath;
@synthesize classFilenameGlossary;
@synthesize listofclasses;

클래스리스트를 저장하는 기존 파일에서 ViewDidload 에서이 사전을 초기화합니다.

- (void)viewDidLoad {
[super viewDidLoad];

// Get home directory

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
homedirectory = [paths objectAtIndex:0];
masterindexpath = [homedirectory stringByAppendingPathComponent:@"MasterIndex"];

// Get master course list or create it if necessary

NSFileManager *fm = [NSFileManager defaultManager];
if ([fm fileExistsAtPath:masterindexpath] == NO)
{
    NSMutableDictionary *temporarydictionary = [NSMutableDictionary dictionary];
    [temporarydictionary writeToFile:masterindexpath atomically:NO];
    [temporarydictionary release];
}

[classFilenameGlossary initWithContentsOfFile:masterindexpath];

[homedirectory retain];
[masterindexpath retain];

}

나중에 SetObject : Forkey : 그러나 사전은 절대 변하지 않는 항목을 추가합니다. 원래 나는이 클래스리스트 파일로의 포인터를 사용하여 다른보기 컨트롤러 에서이 작업을 수행했지만, 일단 작동하지 않았다는 것을 알게되면 클래스리스트 파일 내에서 샘플 객체와 키를 단순화하고 설정하려고 시도했습니다.

    [classFilenameGlossary setObject:@"sample filename" forKey:@"sample classname"];

디버거 변수 목록을 살펴 보았으며 0 개의 키/값 쌍이있는 NSMutabledictionary로 올바르게 식별 된 ClassFilenameGlossary를 보여줍니다. 나는 어떤 종류의 오류도받지 않습니다. 사전은 단순히 변하지 않습니다. 현재 MasterIndexPath 파일에서로드 된 사전은 비어 있지만 (아직 항목을 추가 할 수 없었기 때문에) 사전에 항목을 추가 할 수 없도록해서는 안됩니다.

저는 iPhone 프로그래밍의 초보자이므로 누락 된 기본이 있다고 확신합니다. 도움을 주셔서 감사합니다.

올바른 솔루션이 없습니다

다른 팁

이 라인 :

[classFilenameGlossary initWithContentsOfFile:masterindexpath];

다음과 같이 보일 것입니다.

classFilenameGlossary = [[NSMutableDictionary alloc] initWithContentsOfFile:masterindexpath];

NSMutabledictionary에 대한 메모리를 할당하는 것을 잊었으므로 초기화되지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top