За последние несколько дней я искал довольно далеко и широко, и мне нечего показать, за исключением нескольких волосков, выдернутых из моей головы.
Я пытаюсь передать данные своего объекта из одного класса в другойчерез @properties, и все работает хорошо с моими объектами NSString.Но я не могу получить доступ к моим данным NSDictionary (и / или NSMutableDictionary).На самом деле я попытался переключить свой NSDictionary на NSMutableDictionary, переключиться между сохранением и копированием и несколькими другими вариантами, но безрезультатно.
Вот разбивка.Мой NSDictionary объект, который я передаю, является projectMessagesList.Я надеюсь, что этого кода достаточно, чтобы быть кратким, но предоставьте достаточно информации:
DBSProject.h
@interface DBSProject : NSObject <NSCoding>
@property (nonatomic, retain) NSDictionary *projectMessagesList;
@end
DBSProject.m
@implementation DBSProject
@synthesize projectMessagesList=_projectMessagesList;
-(id)init {
self = [super init];
if (self) {
[self setProjectCode:@"CODE"];
NSMutableDictionary *projectMessagesList = [[NSMutableDictionary alloc] init];
DBSMessage *message = [[DBSMessage alloc] init];
[message setMessageDate:[NSDate date]];
[message setMessageText:[NSString stringWithFormat:@"This is a message"]];
[projectMessagesList setObject:message forKey:@"msg"];
NSLog(@"%@", [projectMessagesList objectForKey:@"msg"]);
}
}
return self;
}
NSLog в конце класса моего объекта правильно выводит на консоль «Это сообщение».
Теперь давайте перейдем к другому моему классу, ViewController:
DBSDetailViewController.h
#import "DBSProject.h"
#import "DBSMessage.h"
@interface DBSDetailViewController : UIViewController
@property (strong, nonatomic) DBSProject *myProject;
@property (strong, nonatomic) IBOutlet UILabel *clientCode;
@end
DBSDetailViewController.m
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSString *clientProjectString = [NSString stringWithFormat:@"%@ %@", self.myProject.clientCode, self.myProject.projectCode];
self.title = self.myProject.projectCode;
self.projectCode.text = clientProjectString;
self.projectDescription.text = self.myProject.projectDescription;
self.projectBudget.text = self.myProject.projectBudget;
self.projectDueDate.text = self.myProject.projectDueDate;
DBSMessage *tmpMessage = [[DBSMessage alloc] init];
tmpMessage = [self.myProject.projectMessagesList objectForKey:@"msg"];
NSLog(@"%@", self.myProject.projectCode);
NSLog(@"%@", [tmpMessage messageText]);
}
Это правильно выводит мой код проекта, ноprojectMessagesList (мой NSDictionary) является (нулевым).
Итак, я могу получить доступ ко всему, кроме моего NSDictionary.Есть ли у кого-нибудь предложения относительно моей ошибки?Большое вам спасибо!