从数组填充NSstring

时间:2014-04-10 06:46:35

标签: ios objective-c

我有这个结构:

Items.h:

@interface Items : NSObject
@property (nonatomic, strong) NSString *tipTextField;

MainTableViewController.m

#import "Items.h"

{
NSArray *categoryArray;
NSArray *tipsArray; }

// Initialize the category array
Items *category1 = [Items new];
category1.categoryName = @"Category1";
category1.categoryImage = @"image.png";
category1.tipTextField = tipsArray [0];

Items *tip1 = [Items new];
tip1.tipTextField = @"Hello world!";

//Create tips array
tipsArray = [NSArray arrayWithObjects: tip1, tip2, ... nil];

但是如果我想在CategoryDe​​tailViewController中显示字段" tipTextField"我收到一个空白的屏幕。

换句话说,我想要" category1.tipTextField"显示存储在" tip1.tipTextField = @" Hello world!";"但我收到一个空白文本字段。

有任何帮助吗?提前谢谢!

编辑1 :感谢两者,但在更改数组顺序后,我的应用程序在超级viewDidLoad崩溃:

CategoryDe​​tailsViewController.h

#import "Items.h"
@property (weak, nonatomic) IBOutlet UITextView *tipTextField;
@property (nonatomic, strong) Items *item;

CategoryDe​​tailsViewController.m

- (void)viewDidLoad
{
[super viewDidLoad];

self.tipTextField.text = self.item.tipTextField;
}

编辑2:崩溃是由于[NSObject(NSObject)doesNotRecognizeSelector:]:

4 个答案:

答案 0 :(得分:0)

订单很重要!

您正在设置category1.tipTextField = tipsArray [0];。此时tipsArray为零。

然后您要为tipsArray添加值。这不会影响category1.tipTextField的价值。

答案 1 :(得分:0)

  • 初始化值时
  

category1.tipTextField = tipsArray [0];

tipsArray = nill,即category1.tipTextField = nil。

  • 因此,如果您想显示该值,请为此编写类似
  • 的代码
    Items *tip1 = [Items new];

    tip1.tipTextField = @"Hello world!";

    //Create tips array
   tipsArray = [NSArray arrayWithObjects: tip1, tip2, ... nil]; 

    Items *category1 = [Items new];

    category1.categoryName = @"Category1";

    category1.categoryImage = @"image.png";

    category1.tipTextField = tipsArray [0];

答案 2 :(得分:0)

或者通过覆盖getter在代码中的任何位置使用延迟实例化。

(NSArray *)tipsArray
{
  if(_tipsArray)
  {
    _tipsArray = [NSArray alloc] initWithObjects:tip1, tip2, ... nil];
  }

return _tipsArray;
}

答案 3 :(得分:0)

//Create tips array
tipsArray = [NSArray arrayWithObjects: tip1, tip2, ... nil];

应该到来之前,

category1.tipTextField = tipsArray [0];