2013-04-18 18 views
9

eine App im App Store Während das Senden ich eine Meldung erhalten:Ungültige info.plist - UIMainStoryboardFile oder NSMainNibFile wenn eine App zu App Store zu senden

"Invalid info.plist: the info.plist may contain either UIMainStoryboardFile or NSMainNibFile, but must not contain both keys" 

Nach drum herum Googeln scheint der Konsens zu setzen, ist die "Haupt-Nib-Datei Basisname" zu "MainWindow" und den "Haupt-Storyboard-Datei-Basisname" auf "MainStoryboard_iPAd" setzen. Beide Optionen haben wir bereits.

Die App wurde entwickelt, um sowohl auf dem iPad als auch auf dem iPhone zu laufen und die App enthält zwei Storyboard-Dateien, eine für iPad und eine für iPhone. Ich kann keine sichtbare .nib oder .xib zu manipulieren finden, selbst wenn ich die richtige Antwort gefunden habe.

Hat jemand irgendwelche Hinweise, wie man das anwendet/repariert, damit die App sendet?

Vielen Dank!

Antwort

6

Wie in der Nachricht vorgeschlagen, sollten Sie nicht UIMainStorboardFile und NSMainNibFile in Ihrer Info.plist-Datei festgelegt haben. Ich würde vorschlagen, dass Sie den NSMainNibFile-Eintrag entfernen.

Da Sie zwei Storyboards, eine für iPad und eine für iPhone, können Sie sie als Hauptstoryboard separat in der Zusammenfassung Registerkarte Ihres Projekts festlegen:

enter image description here

8

Leider , @ verbumdeis Antwort funktionierte nicht für mich.

Ich habe versucht, ein iPhone-only-Projekt zu Universal in iOS 7 und es funktionierte nicht. Das Storyboard des iPads wurde nicht gelesen.

Was passiert ist, dass Xcode einen Schlüssel zu meiner .plist hinzugefügt hat, der "Haupt-Nib-Datei-Basisname (iPad)" war. Ich musste diesen Schlüssel löschen und "Haupt-Storyboard-Datei Basis-Name (iPad)" hinzufügen, dann den Dateinamen zu meinem Storyboard (d. H. Storyboard-iPad.storyboard).

+1

Ich musste auch eine Kopie des ersten Storyboards als MainStoryboard-iPad.storyboard erstellen. – WebOrCode

+0

In meinem Fall habe ich ein neues Storyboard erstellt, aber ja, das Kopieren deines iPhone Storyboards kann auch eine vernünftige Antwort sein. Vielen Dank! – OlivaresF

+0

Danke @OlivaresF, diese Antwort hat mich gerettet. Ich hatte eine iPhone-App auf eine universelle App umgestellt, verwendete aber dasselbe Storyboard. – drc

3

prüfen info ->custom IOS target properties

prüfen Main nib file base name(iPhone/iPad) oder Main Storyboard file base name(iPhone/iPad)

Wenn nicht vorhanden sind, fügen Sie sie und Ihre Basisdateinamen schreiben.

Es funktioniert für mich.

0

Keine der oben genannten Lösungen funktionierte für mich.
Dafür, was ich tat, war, dass ich eine storyboard Eigenschaft auf den AppDelegate hinzugefügt und setzen Sie den Wert in - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Unterhalb der Code hierfür lautet:
AppDelegate.h

@property (strong, nonatomic) UIStoryboard* storyboard; 

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad) { // is iPad 
     self.storyboard = [UIStoryboard storyboardWithName:@"Storyboard_ipad" bundle:Nil]; 
    } else { 
     self.storyboard = [UIStoryboard storyboardWithName:@"Storyboard_iphone" bundle:Nil]; 
    } 

    self.window.rootViewController = [self.storyboard instantiateInitialViewController]; 

    [self.window makeKeyAndVisible]; 

    return YES; 
} 
0

Standardmäßig erstellt Xcode den Namen der Hauptnib-Datei (iPad) in der Datei info.plist und weist ihm den Namen Ihres iPad-Storyboards zu.

Hier ist die Auflösung Open Info.plist file-> delete 'Name der Hauptnib-Datei Basis (iPad)' und fügen Sie einen weiteren Schlüssel mit dem Namen 'Haupt-Storyboard-Dateibasisname (iPad)' hinzu und weisen Sie ihm den Namen Ihrer iPad-Storyboard-Datei zu, d. h. Main_iPad bietet keine Erweiterung.