2016-05-13 17 views
0

メインビューのCoreDataエンティティの配列をTableViewControllerに渡す必要があります。対物レンズCでprepareForSegueを介してコアデータアレイを保存する

私はそれを自分自身を助けるために多くのstackoverflowポストを使用し、それが働いたと思った。

しかし、私は私のアプリをビルドするとき、私は表示され、スレッドの問題を抱えている:

[NSTaggedPointerString count]: unrecognized selector sent to instance".

を私はいくつかのチェックを行なったし、問題は、私のtableViewでは、行の数が0に設定されています。だからここ

は私のコードです:私のMainViewController.mで

マイprepareForSegue機能:

(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if ([segue.identifier isEqualToString:@"sgPushDetail"]) 
    { 
     checkDataSavedTableViewController *detail = segue.destinationViewController; 
     detail.datasToDisplay = _listOfDatas; 
    } 
} 
  • listOfDatas datasToDisplayが私TableViewControllerにNSArrayのを宣言している私の MainViewController.h

  • を宣言し、NSManagedObjectのNSArrayのです。ここで

はTableViewControllerで私の件のデータを置くために私の関数である。

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"dataCells" forIndexPath:indexPath]; 
    NSString *rowArray = self.datasToDisplay[indexPath.row]; 
    cell.textLabel.text = rowArray; 
    return cell; 
} 

(しかし、エラーがのviewDidLoadでそうmeeeh表示されます)

どのように私はさらに進むことができますか?

答えて

0

OK I AM STUPID。

私はCoreDataを使用しているので、私は既に自分のエンティティのリストを持っています。私はrandomMehのNSArrayを必要としません、私はそれが必要です:

NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"Contact" inManagedObjectContext:context]; 
0

put break point in prepareforsegue。あなたの配列をチェックしてください。私はあなたのテーブルビューがデータを取得していないようにあなたの配列はゼロではないと思う。必要なブレークポイントを置くか、配列をprepareforsegueに、そしてtableviewcontrollerのviewdidloadに配列を出力し、配列にデータが入っているかどうかチェックしてください!これはdatasToDisplayあなたのエラーがNSString *rowArray = self.datasToDisplay[indexPath.row];

である:)

+0

私はすでにそれを行い、私の配列はナルであることを知っています。しかし、問題は、私はstackoverflowでそれを発見し、それは他の誰のために働いたxD –

+0

次に、あなたの配列がnullである理由を見つける。あなたのデータベースをチェックしてください。データベースからデータを取得しているかどうかを確認します。それはprepareforsegueまたはtableviewの問題ではありません – Lion

+0

私はちょうど私の配列の終わりにnilの値を追加し、今私はもうエラーがありません。しかし、私は追加した最後のエンティティの最初の属性のみを格納します。初心者のCで、私は何かを見つけるためにstackoverflowをローミングし続けます^^ –

0

を助ける

ホープNsManagedObjectの配列ではない文字列の配列です。したがって、NsManagedObjectから文字列値を取得する必要があります。

NSString *rowArray = [self.datasToDisplay[indexPath.row] valueForKey: @"stringKey"] 
+0

私の質問と今の間で、私はその行を変更します: _listOfDatas = [NSArray arrayWithObjects:[newContact valueForKey:@ "name"]、nil ]; (私はnil値を置いた)。今私はもうエラーはありませんが、私の配列は保存した最後のエンティティの最初の属性だけを格納します。 問題は本当にどこか他の場所だと思います。 私の配列に+ =演算子をつけたいと思っています^^ あなたの答えは、valueForKeyとは何ですか?配列の値は?エンティティ値? –

関連する問題