【问题标题】:expected method to read dictionary element not found on object of type 'nsstring *'在“nsstring *”类型的对象上找不到读取字典元素的预期方法
【发布时间】:2015-02-11 11:11:25
【问题描述】:

我正在尝试使用文本字段输入一些数字,然后让 Parse 服务器查找标记有在该字段中输入的任何数字标记的图像,但是当我收到这个大红色错误(在主题标题中)时尝试构建应用程序进行测试。这是我的代码:

-(IBAction)Submit:(id)sender {

PFFile *people = TicketNumberBox.text[@"ticketNumber"];
[people getDataInBackgroundWithBlock:^(NSData *imageData, NSError *error) {
    if (!error) {
         UIImageView TicketImage = [UIImage imageWithData:imageData];
    }
}];

}

这里有一张图片可以进一步帮助您:

【问题讨论】:

  • TicketNumberBox 是什么? UITextField? UILabel?所以TicketNumberBox.textNSString,而不是NSDictionary。你不能这样做TicketNumberBox.text[@"ticketNumber"]
  • 是的。就像我之前说的,它是一个文本字段。
  • PFFile *people = TicketNumberBox.text;?
  • 约定是变量名以小写字母开头,类名以大写字母开头。在该 Objective-C 约定下,TicketNumberBox 看起来是行类名称并导致一些混乱。为了使事情更清楚,您可以编写:-(IBAction)Submit:(NSTextField *)sender 并使用 sender 作为文本字段指针:self.text
  • [@"ticketNumber"] 将用于引用 NSDictionary 的元素。 NSString 不是 NSDictionary。

标签: ios objective-c parse-platform uitextfield pffile


【解决方案1】:

TicketNumberBox.text[@"ticketNumber"];没有任何意义,因为 UITextField 中的文本变量是 NSString 类型,而不是字典类型,所以你不能像这样取 ticketNumber 值。你可以把你的代码分成这样的东西来理解:

NSString *text = TicketNumberBox.text;
PFFile *people = text[@"ticketNumber"];

这对你还有意义吗?

更可信的是:

NSString *text = TicketNumberBox.text;
PFFile *people = [PFFile alloc] init];
people.ticketNumber = text;

【讨论】:

    【解决方案2】:

    someString[@"this is the string I want to set"] 中的语法是您在 NSDictionary 中请求键值的方式@“这是我要设置的字符串”,这就是您收到特定错误的原因。但是,字符串不是字典,因此编译器会抱怨您试图将字符串作为字典键来寻址。混淆的元素是字典可以使用字符串作为键。所以要引用字典:NSDictionary *dictionary = @{@"key":"@"value"}; 你使用语法NSString *string = dictionary[@"key"] 返回@"value",使"string" 等于@"value"。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 2021-08-30
      • 2018-10-02
      相关资源
      最近更新 更多