2016-11-20 63 views
0

从结构删除记录我有一个struct定义为:根据条件

struct Section { 
var name: String! 
var items: [String]! 

init(name: String, items: [String]) { 
    self.name = name 
    self.items = items 
} 
} 

现在怎么可以根据记录的项目数我筛选这个结构。说我想删除每个记录,如果项目是零

例如

sections = [ 
     Section(name: "Mac", items: ["MacBook", "MacBook Air", "MacBook Pro", "iMac", "Mac Pro", "Mac mini", "Accessories", "OS X El Capitan"]), 

     Section(name: "iPad", items: []), // no Items in this record (remove this) 

     Section(name: "iPhone", items: ["iPhone 6s", "iPhone 6", "iPhone SE", "Accessories"]), 

] 

以上数据3记录,其中记录#2(的“iPad”)没有任何项目,因此我可以从我的结构去除呢?

回答

2

首先,不要声明items为隐式解包可选,因为您使用的是期望非可选的初始化器。

的好处是,你只需要检查的空虚,而不是额外的nil

let filteredSections = sections.filter { !$0.items.isEmpty } 
+0

感谢你的帮忙,感谢你的努力。 –