使用故事板

using storyboards

我正在尝试使用 ray 中的故事板的教程。我正在使用一个标签栏控制器连接一个嵌入导航控制器的 table 视图,这个 table 视图被命名为播放器和一个连接标签栏控制器的视图控制器被命名为手势。通过将这些详细信息存储在 object 中,在玩家 table 视图中显示玩家游戏、姓名和等级。所以我创建了一个新的文件播放器,其基数 object 将它们存储为属性,现在我必须将这些属性存储在称为播放器视图控制器的视图控制器数组中,然后我必须制作数组和一些测试播放器objects 在 App Delegate 中,然后使用实例 variable.so 将其分配给 PlayersViewController 的玩家 属性 在 AppDelegate.m 中,我导入了玩家和玩家视图 controller.h headers 并添加一个名为 _players 的新实例变量。所以我在 app delegate.m 中的代码如下错误是下标需要接口 'NSARRAY' 的大小,这在 viewcontrollers[0] 行的 non-fragile ABI 中不是常量。

#import "AppDelegate.h"
#import "Player view controller.h"
#import "player.h"

@implementation AppDelegate {
   NSMutableArray *_players; }

@synthesize window = _window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
   _players=[NSMutableArray arrayWithCapacity:20];
   player *player1=[[player alloc]init];
   player1.name=@"name";
   player1.game=@"cricket";
   player1.rating=3;
   [_players addObject:player1];
   player1=[[player alloc]init];
   player1.name=@"name";
   player1.game=@"football";
   player1.rating=3.5;
   [_players addObject:player1];
   player1=[[player alloc]init];
   player1.name=@"tony";
   player1.game=@"handball";
   player1.rating=4;
   [_players addObject:player1];
   UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController;
   UINavigationController *navigationController = [tabBarController viewControllers][0];
   UINavigationController *navigationController = [tabBarController viewControllers][0]; /*at this point i get a error as  [error: subscript requires size of interface 'NS ARRAY' which is not constant in non-fragile ABI] */
   Player view controller *playersViewController = [navigationController viewControllers][0];  
   playersViewController.players = _players;

   return YES;

如果您只是想获取数组的第一个对象,为什么不使用 firstObject?

UINavigationController *navigationController = [[tabBarController viewControllers] firstObject];

您可以使用下面的代码

UINavigationController *navigationController = 
    [tabBarController.viewControllers objectAtIndex:0];

参考以下链接..关于错误和解释..!

What is a non-fragile ABI?

Subscript requires size of interface 'NSArray', which is not constant in non-stable ABI

希望对您有所帮助...!

使用下标语法(即someArray[0])需要在iOS 6 SDK中引入的Objective-C特性,但是afaik Xcode 4.2只支持iOS 5,所以你要么必须使用旧语法:

UINavigationController *navigationController = [[tabBarController viewControllers] objectAtIndex:0];
//alternatively:
UINavigationController *navigationController = [[tabBarController viewControllers] firstObject];

...或更新到 Xcode 的更新版本(据我所知,您甚至无法使用 Xcode 4.2 提交到 App Store)。