我有一个 NSMutableDictionary ,其中包含一到四个对象。每个包含的对象都是一个 NSDictionary。第一个字典包含大约 83,000 个对 NSManagedObjects 的引用。第二本词典包含大约 14,000 个相同类型的对象。
在下面的代码中,NSLog 语句中没有发生任何事情。就好像跳过了一样,程序继续运行。但是,不久之后我在使用这些词典时遇到了其他问题。我认为首先清理这个可能会对其他问题有所了解。
pos = @"v";
NSLog(@"%@", pos);
[request setEntity:[NSEntityDescription entityForName:@"SYNSET" inManagedObjectContext:[ManagedObjectContext moc]]];
predicate = [NSPredicate predicateWithFormat:@"partOfSpeech = %@", pos];
[request setPredicate:predicate];
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"synsetOffset" ascending:YES];
[request setSortDescriptors:[NSArray arrayWithObject:sortDescriptor]];
synsetsArrayForPos = [[ManagedObjectContext moc] executeFetchRequest:request error:&error];
synsetDictionaryMutableForPos = [[NSMutableDictionary alloc] initWithCapacity:100000];
for (SYNSET *synset in synsetsArrayForPos)
[synsetDictionaryMutableForPos setObject:synset forKey:[NSString stringWithFormat:@"%@",synset.synsetOffset]];
[dictionaryMutableOfSynsetDictionaries setObject:[NSDictionary dictionaryWithDictionary:synsetDictionaryMutableForPos] forKey:pos];
NSLog(@"dictionaryMutableOfSynsetDictionaries is class of %@ with description %@", [dictionaryMutableOfSynsetDictionaries class], [dictionaryMutableOfSynsetDictionaries description]);
pos = @"a";
NSLog(@"%@", pos);
我用不同的值重复此代码四次,pos
每次打印顶级dictionaryMutableOfSynsetDictionaries
字典描述的 NSLog 都无法打印。如果我用字符串常量替换 `[dictionaryMutableOfSynsetDictionaries description]',它会打印出来。
这里发生了什么?这是预期的行为还是我做错了什么?
(这段代码,加上大字典,是用来完成大型sqlite数据库的关系链接的,它不会用于可部署代码。我只在iOS模拟器上运行它。我会把更新的完成此更新后,我的应用程序包中的数据库。)