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
NSArray
和 NSDictionary
类 不应在 Swift 中使用,除非绝对必要。它们的行为略有不同,并且您失去了使 swift 如此出色的所有类型安全。
命名
一般来说,label
、label2
和 detailDescription
这样的命名方案非常混乱。他们没有告诉我每个人代表什么。尝试 catImageUrlLabel
和 catNameLabel
之类的更具体的内容。此外,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.
这非常清楚一切都代表什么,并且将使代码库更具可读性和可维护性。
希望这能让你走上正轨。
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
NSArray
和 NSDictionary
类 不应在 Swift 中使用,除非绝对必要。它们的行为略有不同,并且您失去了使 swift 如此出色的所有类型安全。
命名
一般来说,label
、label2
和 detailDescription
这样的命名方案非常混乱。他们没有告诉我每个人代表什么。尝试 catImageUrlLabel
和 catNameLabel
之类的更具体的内容。此外,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.
这非常清楚一切都代表什么,并且将使代码库更具可读性和可维护性。
希望这能让你走上正轨。