2016-05-18 4 views
0

Ich versuche, App im App Store zu veröffentlichen, aber ich habe eine Antwort von Apple-Team, dass die App abstürzt. Ich benutze Crashlytics, also habe ich eine bestimmte Unfalllinie bekommen. Ich konnte Crash - On - Gerät oder im Simulator nicht duplizieren.Apple Review lehnt NSBundle Ausnahme

Dieser Code sollte md5 Summe der statischen Ressourcen berechnen, um sicherzustellen, dass niemand sie geändert hat.

Code:

NSArray *formats = @[@"html", @"mustache", @"strings", @"p12", @"xml", @"der", @"nss", @"css", @"json", @"plist"]; 
NSArray *filesToSkip = @[@"Info.plist"]; 

NSBundle *bundle = [NSBundle mainBundle]; 
NSString *resourcePath = [bundle resourcePath]; 
NSFileManager *man = [NSFileManager defaultManager]; 
NSArray *resPaths = [man subpathsAtPath:resourcePath]; 
resPaths = [resPaths sortedArrayUsingSelector:@selector(compare:)]; 
NSMutableArray *sums = [NSMutableArray array]; 
for(NSString *path in resPaths) { 
    if([filesToSkip containsObject:[path lastPathComponent]] == NO && [formats containsObject:[path pathExtension]]) { 
     NSString *fullPath = [resourcePath stringByAppendingPathComponent:path]; 
     NSData *content = [NSData dataWithContentsOfFile:fullPath]; 
     NSString *md5 = [content md5]; 

     [sums addObject:md5]; //line of crash - inserting nil element into the NSMutableArray 
    } 
} 

md5 Methode, wenn von hier: https://stackoverflow.com/a/16391701/5226328 - gibt nil zurück, wenn NSData Objekt gleich Null ist.

Es versuchte Problem zu finden, aber ich habe keine Ahnung, was los ist:

ich jedes Szenario kann nicht finden, die md5 (string) nil (sogar mit Bündel == null oder resourcePath machen würde == es sollte nicht in dieser Zeile abstürzen).

Ich denke, ich vermisse etwas (oder nicht Apple Review-Methoden zu verstehen). Jede Hilfe oder Beratung wäre willkommen.

Antwort

0

Sie können NIL nicht mit der Methode addObject zu NSMutableArray hinzufügen. Alternativ könnten Sie versuchen, dem Array jederzeit [NSNull null] hinzuzufügen, wenn die MD5-Methode nil zurückgibt. Später im Code, wenn Sie das NSMutableArray verwenden, müssen Sie es auch für die NSNull-Objekte überprüfen und sie als Null interpretieren.

Hier ist eine ähnliche Position: how to add nil to nsmutablearray?

+0

Sie Antwort danken. Ich weiß, dass ich NSMutableArray nicht mit nil ergänzen kann. Aber der mitgelieferte Code sollte das niemals versuchen. Um nil 'resurgencePath' oder' path' hinzuzufügen, müsste nil sein - aber dann wird for-in nicht ausgeführt. Eine andere Möglichkeit - 'fullPath' zeigt auf keine Datei. Aber es ist auch unwahrscheinlich - Wege werden wenige Zeilen früher erhalten. Ich weiß, dass es nicht Null sein kann. Aber ich weiß nicht, wie es möglich ist, dass es null ist. – franiis