Swift 2 NSMutableArray() 值不显示在变量中

Swift 2 NSMutableArray() value don't shows in variable

Swift 2 NSMutableArray() 值不显示在变量中 我的代码在这里。

   var detail_desc : NSMutableArray! = NSMutableArray()

当我添加此代码时,我得到了

 label.text = self.detail_desc.description

我的数组输出

   {

{

    "cat_img" = "http://asdasd.com/asd.jpg";
    "cat_name" = Good;
    id = 45;
    "is_active" = 3;
    "last_update" = "2015-11-21 15:32:42";

    }

}

我想使用数组项作为变量;

label.text = cat_img
label2.text = cat_name

有什么想法吗?

你的问题很多,我会一一解决的:

下划线

下划线命名在 cocoa 中并不常见,而且读起来很奇怪。将 detail_desc 更改为 detailDesc

注意:有些情况下我们会使用下划线,其中之一是核心扩展类。在这些情况下,它是前缀 - 下划线 - 名称。即:my_specialFunctionOrVariable

NSMutableArray

NSArrayNSDictionary 类 不应在 Swift 中使用,除非绝对必要。它们的行为略有不同,并且您失去了使 swift 如此出色的所有类型安全。

命名

一般来说,labellabel2detailDescription 这样的命名方案非常混乱。他们没有告诉我每个人代表什么。尝试 catImageUrlLabelcatNameLabel 之类的更具体的内容。此外,detailDescription 可能是 catInformation

封装在数组中的单个对象

你确实有一个字典作为数组中的单个对象,我认为你应该只有字典引用。 (除非将来可能有更多)。假设没有,我会继续前进。

看起来如何

将您的变量更改为如下内容:

var detailDescription: [String : AnyObject] = ...

然后,在您的 UI 设置代码中,执行如下操作:

label.text = detailDescription["cat_img"] as? String
label2.text = detailDescription["cat_name"] as? String

建模对象

Json是脏的,我们宁愿尽量不去处理它。考虑将您的 Cat json 建模为 Cat 对象:

struct Cat {
    let imageUrl: String
    let name: String
    let id: Int
    // etc.
}

然后在收到它时将 json 解析到这个模型中,并将其传递给视图控制器。

那么我们的代码可能如下所示:

nameLabel.text = cat.name
imageUrlLabel.text = cat.imageUrl
// etc.

这非常清楚一切都代表什么,并且将使代码库更具可读性和可维护性。

希望这能让你走上正轨。