【问题标题】:How to set a NSString in a class from a uitextfield from a viewcontroller如何从视图控制器的 uitextfield 在类中设置 NSString
【发布时间】:2011-06-09 03:08:41
【问题描述】:

我想设置 NSString *receiveCodeText;那是在我的 viewcontroller 中的 viewcontroller 中具有 uitextfiled 值的对象中 tableView:didSelectRowAtIndexPath: 但是我收到错误

/用户/imac/文档/Iphone 应用程序/表/类/RootViewController.m:198:0 /Users/imac/Documents/Iphone 应用程序/表/类/RootViewController.m:198: 错误:访问未知 'setReceiveCodeText:' 类方法

/用户/imac/文档/Iphone 应用程序/表/类/RootViewController.m:198:0 /Users/imac/Documents/Iphone 应用程序/表/类/RootViewController.m:198: 错误:无法设置对象 - 要么 只读属性或未找到设置器

这是我的代码以及我尝试传递文本的方式。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    searchTableViewController *searchTable = [[searchTableViewController alloc] initWithNibName:@"searchTableViewController" bundle:nil];

    switch (indexPath.row) {
        case 1: {
            searchTable.editedFieldName = @"Make";
            //Pass code number over to DBAccess class
            DBAccess.receiveCodeText = self.codeText.text;
        } break;
        case 2: {
            searchTable.editedFieldName = @"Model";
        } break;
        case 3: {
            searchTable.editedFieldName = @"Year";
        } break;
    }

    [self.navigationController pushViewController:searchTable animated:YES];
    [searchTable release];
}

【问题讨论】:

  • 你不能在类上设置属性,你使用属性简写在DBAccess 上设置一个值(我假设是你的类?)类(不是类的实例),我'我对这甚至编译感到惊讶,是否有编译器警告?无论如何,我认为您想获得该类的一个实例。
  • 你@synthesize 了吗?
  • bshirley 这没有编译 :) 当我对我的 sqlquery 进行硬编码时,我一切正常,但我想在运行时设置它,因此这段代码 :)
  • 我明白你的意思,现在意识到我试图向我的班级发送一个值而不是向我的班级发送一个值是多么愚蠢......现在唯一的事情是我不是确定什么时候可以将这个变量传递给我的类实例..
  • 我不确定你所说的定义是什么意思?

标签: iphone ios uitableview uitextfield


【解决方案1】:

DBAccess 是一个类。除非setRecieveCodeText:是类方法,否则不能直接使用。属性属于实例而不是类,因此您必须声明类方法并使用静态变量来处理它。但是,如果您想避免同一类的多个实例,则实例化然后使用该对象甚至使用单例是有意义的。单例应该可以跨类使用。

我已经包含了与类方法方法相关的代码。

@interface DBAccess: NSObject {
}

+ (NSString *)receiveCodeText;
+ (void)setReceiveCodeText:(NSString *)code;
[..]
@end

.m 文件中,

static NSString * receiveCodeText;

@implementation DBAccess
[..]
+ (NSString *)receiveCodeText {
    return receiveCodeText;
}

+ (void)setReceiveCodeText:(NSString *)code {
    [receiveCodeText autorelease];
    receiveCodeText = [code copy];
}
[..]
@end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多