2015-02-19 2 views
0

Я проверяю, сохраняется ли каталог, и похоже, что это не так.NSMutableDictionary не сохраняется в локальном каталоге

Вот что у меня есть, это по существу создание списка файлов, которые были загружены в Dropbox. DropboxList объявляется в файле заголовка и затем синхронизируется.

int i = 0;

DropboxList = [[NSMutableDictionary alloc]init]; 

do { 

[DropboxList setObject:@"NO" forKey:[NSNumber numberWithInt:i]]; 

i++; 

} while (i < sortedFiles.count); 

NSLog(@"dropbox list is %@", DropboxList); 


NSArray *dropBoxPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *dropBoxDocumentsDirectory = [dropBoxPaths objectAtIndex:0]; 
NSString *dropBoxDataPath = [dropBoxDocumentsDirectory stringByAppendingPathComponent:@"/DropboxUploads"]; 

if (![[NSFileManager defaultManager] fileExistsAtPath:dropBoxDataPath]) { 
    [[NSFileManager defaultManager] createDirectoryAtPath:dropBoxDataPath withIntermediateDirectories:NO attributes:nil error:nil]; 
} 

NSString *filePath = [dropBoxDataPath stringByAppendingPathComponent:@"dropboxList.out"]; 

[DropboxList writeToFile:filePath atomically:YES]; 

NSMutableDictionary *newDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:filePath]; 

NSLog(@"newDictionary list is %@", newDictionary); 

Вот моя консоль:

dropbox list is { 
    0 = NO; 
    3 = NO; 
    2 = NO; 
    1 = NO; 
    4 = NO; 
} 
newDictionary list is (null) 

Я пытался Alloc инициализации для newDictionary, прежде чем писать, и я получаю тот же результат. Есть идеи?

ответ

0

Проблема заключается в следующей строке

[DropboxList setObject:@"NO" forKey:[NSNumber numberWithInt:i]]; 

DropboxList writeToFile работает только с действительным списком свойств. Для NSMutableDictionary как действительного объекта списка свойств его ключи должны быть строковыми типами, а не NSNumber.

Решение

[DropboxList setObject:@"NO" forKey:[NSString stringWithFormat:@"%d",i]]]; 

Кроме того, необходимо использование параметра writeToFile возврата для проверки.

BOOL isWritten = [DropboxList writeToFile:filePath atomically:YES]; 
if (isWritten) 
{ 
    NSMutableDictionary *newDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:filePath]; 
    NSLog(@"newDictionary list is %@", newDictionary); 
{ 
else 
{ 
    NSLog(@"Something went wrong"); 
} 
0

Хорошо, поэтому проблема заключалась в том, что у меня был NSNumbers в качестве ключей, который не работает. Я сделал ключи, и мы золотые.