свойство не найдено для объекта типа - PullRequest
4 голосов
/ 13 февраля 2012

это кажется просто странным, так как я не могу решить его и застрял над ним.Я использую раскадровку для навигации между табличным представлением и подробным представлением.Это работало нормально, когда я передавал единственный (NewsRecord) объект из моего класса табличного представления (TopStoriesViewController) в мой подробный класс (DetailNewsViewController).Но теперь мне нужно передать массив объектов (NewsRecord) при переходе к классу сведений вместо одного объекта (NewsRecord).Но когда я создаю NSArray * в своем классе подробностей и пытаюсь получить к нему доступ в своем классе табличного представления в методе prepareForSegue, используя объект класса подробностей, это дает следующую ошибку --- свойство 'items', не найденное в объекте типа 'DetailNewsViewController *'во время компиляции.items - это объект NSArray, который получает свое содержимое из «records», который также является NSArray в классе TopStoriesViewController.

Мой вопрос заключается в том, почему я могу получить доступ к getNewsDetails DetailNewsViewController в TopStoriesViewController, а не items.

Мои классы следующие - TopStoriesViewController.m

#import "DetailNewsViewController.h"

     some code here....

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
         if ([[segue identifier] isEqualToString:@"ShowDetailedNews"]) {
         DetailNewsViewController *detailNewsVC = [segue destinationViewController];
         [segue.destinationViewController setHidesBottomBarWhenPushed:YES];
         NSInteger indexForNewsSelectedFromTBV = [[self.tableView indexPathForSelectedRow] row];
         [detailNewsVC setGetNewsDetails:[entries objectAtIndex:indexForNewsSelectedFromTBV]]; //This is working fine...
         detailNewsVC.items=entries;  //Error is occurring here...
    }
   } 

DetailNewsViewController.h

#import "NewsRecord.h"
    @interface DetailNewsViewController : UIViewController {
       NewsRecord *getNewsDetails;

       some other declarations...

       NSArray *items;
   }
@property(nonatomic,retain) NewsRecord *getNewsDetails;
@property(nonatomic,retain) NSArray *items;
@end

DetailNewsViewController.m

#import "DetailNewsViewController.h"
@synthesize getNewsDetails,items;

NewsRecord.h

@interface NewsRecord : NSObject {
      NSString *newsTitle;
      NSString *newsDescription;
    }
    @property(nonatomic,retain) NSString *newsTitle;
    @property(nonatomic,retain) NSString *newsDescription;
    @end

1 Ответ

0 голосов
/ 13 февраля 2012

Вы должны попытаться явно использовать сеттер для предметов:

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
     if ([[segue identifier] isEqualToString:@"ShowDetailedNews"]) 
     {

     DetailNewsViewController *detailNewsVC = [segue destinationViewController];
    ...
     [detailNewsVC setItems:entries];

     }
} 
...