【问题标题】:accessing properties from swift class in array [duplicate]从数组中的swift类访问属性[重复]
【发布时间】:2016-12-06 12:51:10
【问题描述】:

我有一个用 Swift 编写的类(模型),我想从 Objective C 类中访问它,但我不能。

为了解释更多,我有一个数组,该数组附加了该模型中用 Swift 编写的字典。

模型如下所示:

@objc class GoalPreviewModel: NSObject {
 var id : Int?
 var name : String?

 init(dictionary: NSDictionary)  {
     self.id = dictionary["id"] as? Int
     self.name = dictionary["name"] as? String
 }

}

这个字典被这个模型很好地填充了,只要我从用 Swift 编写的类中访问它,一切正常。当我尝试访问该字典数组并访问属性时,就会出现问题。 当我想访问名称时,下面的语句工作正常。

[_nameLabel setText:[(NSString*) [[AppState sharedInstance].arrayOfDicts objectAtIndex:idx] valueForKey:@"name"]];

但是当我尝试访问 valueForKey:@"id" 它给了我这样的错误 “这个类不符合键 id 的键值编码。”

有人可以帮我解决这个问题吗?

提前致谢!

【问题讨论】:

  • 出于好奇,如果您将属性重命名为 id 以外的其他名称,它会起作用吗?
  • @sbooth 我试过了,但是没用
  • 你有seen this吗?
  • 似乎Int 被桥接到不能为nil 的基本NSInteger(即没有可选性)。此外,如链接的问题和答案中所述,Int? 无法桥接到NSNumber,因为NSNumber 是一个对象,并且可能存储非整数值。
  • @paulvs 是的,我现在知道了,我现在就试试。谢谢!

标签: ios objective-c arrays swift dictionary


【解决方案1】:

您应该公开您的属性(id 和名称),并尝试以这种方式在没有键值编码的情况下访问它:

 [_nameLabel setText:(NSString*)[[AppState sharedInstance].arrayOfDicts 
                       objectAtIndex:idx]name]];

【讨论】:

  • 感谢您的帮助,答案在此link
猜你喜欢
  • 1970-01-01
  • 2023-01-24
  • 2022-08-13
  • 2018-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
相关资源
最近更新 更多