在拾取器视图中将数组对象保存为字符串?

时间:2013-06-20 22:01:32

标签: iphone ios objective-c cocoa-touch uikit

所以我正在使用pickerview并且需要一个字符串来等于我存储在array中的一些内容。组件的pickerview代码如下所示。

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
    switch (row) {
    case 0:
        image.image = image1;
        email = EmailArray[1];
        break;
    case 1:
        image.image = image2;
        email = EmailArray[3];
        break;
    case 2:
        image.image = image3;
        email = EmailArray[5];
        break;
    }

NSLog(@"%@", email)

}

据我所知,此代码工作得很好。这里的NSLog每次都会返回正确的电子邮件。然后用户按下利用“电子邮件”字符串的按钮。这是该代码的第一部分。

- (IBAction)sendFeedback:(id)sender 
{
    NSLog(@"%@", email);
}

仅此处NSLog未返回正确的电子邮件。它只是冻结程序并给我一个指向NSLog的线程错误。我没有正确地将数组对象传递给字符串吗?

如果我将代码更改为此功能就可以了。

switch (row) {
case 0:
    image.image = image1;
    email = @"testEmail@gmail.com";
    break;

在此之后,NSLogs将显示测试电子邮件。

请帮我解决这个问题。如果您需要更多信息,请询问。

修改

这是我的ViewController.h文件的开头。

@interface ViewController : UIViewController
<UIPickerViewDataSource, UIPickerViewDelegate, UIImagePickerControllerDelegate> {
    NSMutableArray *EmailArray;
}

这是在ViewController.h中声明电子邮件的地方。

@implementation ViewController
NSString *email;

我得到的错误看起来像这样。

Thread 1:EXC_BAD_ACCESS(code=2, address=0x14)

2 个答案:

答案 0 :(得分:0)

您不应将email声明为实例var。必须将NSString声明为具有复制修饰符

的属性
@property (copy, nonatomic) NSString* email;

答案 1 :(得分:0)

您的变量未保留在内存中,因此崩溃。

您有两个选择

  1. 分配后添加[email retain]
  2. 启用ARC,它将为您保留该变量。