Objective c 通过NSDictionary填充NSArray,NSDictionary通过.plist填充

Objective c 通过NSDictionary填充NSArray,NSDictionary通过.plist填充,objective-c,ios,nsarray,nsdictionary,Objective C,Ios,Nsarray,Nsdictionary,代码如下: -(void)viewDidLoad { [super viewDidLoad]; //Verb data read, sorted and assigned to a dictionary NSBundle *bundle = [NSBundle mainBundle]; NSString *plistPath = [bundle pathForResource:@"VerbDictionary" ofType:@"plist"];

代码如下:

-(void)viewDidLoad {
    [super viewDidLoad];

    //Verb data read, sorted and assigned to a dictionary
    NSBundle *bundle = [NSBundle mainBundle];

    NSString *plistPath = [bundle pathForResource:@"VerbDictionary" ofType:@"plist"];    
    NSDictionary *verbDictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath];

    NSArray *verbs = [verbDictionary allKeys];
    NSArray *vSorted = [verbs sortedArrayUsingSelector:@selector(compare:)];

    NSString *selectedVerb = [vSorted objectAtIndex:0];
    NSArray *vArray = [verbDictionary objectForKey:selectedVerb];
    self.verbArrayData = [[NSArray alloc] initWithArray:vArray];
}
下面是我收到的错误消息的屏幕截图:

(来自)

self.verbArrayData
不是从
vArray
填充的
self.verbDataArray
nil
,不应该是

我从零开始尝试过这一点,事实上,我以前也做过,但通过iOS 4和释放/保留内存管理。这是我启动的第一个纯iOS5ARC应用程序


有什么想法吗?

我想出来了。。。但我不确定它为什么有效。Self.verbArrayData无效。但是,仅使用verbArrayData就可以了。因此,我将self.verbArrayData=[[NSArray…]更改为verbArrayData=[[NSArray…]它编译并运行良好。因此,self.verbArrayData在本例中是getter而不是setter;我认为。谢谢-–

这不是一条错误消息。它是一个显示变量的视图。你只是在self.verbArrayData上有一个断点吗?!你是正确的,Matthias。没有错误消息,但数组没有按应有的方式填充。我不能我想知道为什么self.verbDataArray没有从本地NSArray变量vSorted初始化。对于self.verbDataArray,代码特别是alloc's和initfromarray:vArray。我昨天粘贴了一个代码片段,该代码片段不再通过Safari出现在网页上-在Firefox中工作正常。您使用GDB或LLDB作为调试器吗?在xCode 4.3.1中,LLDB存在一个错误,IVAR偶尔会显示错误的值。请尝试切换到GDB或升级到xCode 4.3.2。verbArrayData是如何声明的?是否有可能在实际查看之前取消分配它?在其中放入一些NSLog语句,以便您可以看到实际分配给这些变量的是什么bably help。我想出来了…但我不确定它为什么会工作。Self.verbArrayData无效。但是,只是verbArrayData工作正常。因此,我将Self.verbArrayData=[[NSArray..更改为verbArrayData=[[NSArray..它编译并运行良好。因此,在本例中,self.verbArrayData是getter而不是setter;我认为。谢谢-这几乎肯定是您声明verbArrayData属性的问题,这就是为什么我要求您将代码发布到声明它的地方。