質問

私はiPhoneのテーブルビューに問題があります。ここで毎回クラッシュする理由がわかりません。

   - (void)viewDidLoad
{
     [self checkAndCreatePList];
    NSMutableDictionary* plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:pListPath];

    self.animals = [plistDict objectForKey:@"Animals"];



         [super viewDidLoad];

}



    -(UITableViewCell *) tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath
{
    static NSString *SimpleTableIdentifier =@"SimpleTableIdentifier";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
    if(cell== nil){
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:SimpleTableIdentifier]autorelease];
    }
    NSUInteger row = [indexPath row];

    cell.textLabel.text = [animals objectAtIndex:row];

    return cell;
}

Line Cell.TextLabel.Text = [Animals ObjectAtindex:row]でクラッシュします。そして、猛かけられていない例外によるアプリの終了を教えてくれます。

役に立ちましたか?

解決

Animals プリストのキーとは、配列ではなく辞書を指します。辞書には保証された注文がないため、特定のインデックスでオブジェクトを要求することは意味がありません。

これに加えて、メモリリークがあります - plistDict 割り当てられますが、リリースされません。コードで静的アナライザーを実行しましたか?

他のヒント

[plistDict objectForKey:@"Animals"];

あなたが期待しているような配列ではなく、辞書を返すことです。データが正しいかどうかを確認するには、プリストファイルをチェックアウトする必要があります。

エラーはあなたが呼んでいるようです objectAtIndex line cell.textlabel.text = [動物objectatindex:row]のnsdictionaryオブジェクトについて;動物には実行時に何が含まれているかを確認してください。このためには、この行の前にnslogを使用します。 nslog(@"%@"、動物);

ように見えます animals いくつかです dictionary そして、あなたは呼んでいます objectAtIndex: そのメソッド。 objectAtIndex: : は NSArray 方法。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top