Wie wird die Gesamtgröße von NSDictionary
Objekt berechnet? Ich habe 3000 StudentClass Objekte in NSDictionary
mit verschiedenen Schlüsseln. Und ich möchte Gesamtgröße des Wörterbuchs in KB berechnen. Ich benutzte malloc_size()
, aber es immer zurück 24 (NSDictionary
enthalten entweder 1 Objekt oder 3000 Objekt) sizeof()
gibt auch immer die gleichen zurück.Wie wird die Gesamtgröße des NSDictionary-Objekts berechnet?
Antwort
Sie könnten versuchen, alle Schlüssel des Dictionarys in einem Array abzurufen und anschließend das Array zu durchlaufen, um die Größe zu ermitteln. Dadurch erhalten Sie möglicherweise die Gesamtgröße der Schlüssel im Wörterbuch.
NSArray *keysArray = [yourDictionary allValues];
id obj = nil;
int totalSize = 0;
for(obj in keysArray)
{
totalSize += malloc_size(obj);
}
Der beste Weg, um die Größe von großen NSDictionary
zu berechnen, würde ich es in NSData
konvertieren und die Größe der Daten erhalten. Viel Glück!
Durch die Umwandlung in NSData können wir berechnen die richtige Größe des NSDictionary-Objekts in Bytes? Oder gibt es die konvertierte NSData-Objektgröße, die mit der NSDictionary-Objektgröße nicht übereinstimmt? – Shamsiddin
könnte nützlich sein, um NSData zu konvertieren, wenn Ihr Wörterbuch Standardklassen enthält (zB NSString.) Und nicht custome diejenigen:
NSDictionary *yourdictionary = ...;
NSData * data = [NSPropertyListSerialization dataFromPropertyList:yourdictionary
format:NSPropertyListBinaryFormat_v1_0 errorDescription:NULL];
NSLog(@"size of yourdictionary: %d", [data length]);
Sie auch auf diese Weise finden:
NSDictionary *[email protected]{@"a": @"Apple",@"b": @"bApple",@"c": @"cApple",@"d": @"dApple",@"e": @"eApple", @"f": @"bApple",@"g": @"cApple",@"h": @"dApple",@"i": @"eApple"};
NSMutableData *data = [[NSMutableData alloc] init];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
[archiver encodeObject:dict forKey:@"dictKey"];
[archiver finishEncoding];
NSInteger bytes=[data length];
float kbytes=bytes/1024.0;
NSLog(@"%f Kbytes",kbytes);
Hier ist eine ähnliche Frage: http://stackoverflow.com/questions/8223560/how-to-find-the-size-of-any-object-in-ios – Ossir