var tmpImg = self.dbManager.getPhotoItemById(ptempArr[imageIndex].photoId)
var nss = tmpImg!.tags // NSet of "Tag" objects with a String "tagName" field
let arr = map(nss, { "\($0)" })
customView!.setLabelArray(arr) // I want arr to become an array of tagNames.
Ex)标记对象:{tagName:“tag1”},{tagName:“tag2”}
我希望arr成为[“tag1”,“tag2”]
答案 0 :(得分:1)
Swifts的map
功能是可行的方法。但是,你必须小心强制解包。
let stringArray = tagArray.map { $0.tagName! } // crashes if tagName is nil
更安全的:
let stringArray = tagArray.filter { $0.tagName != nil }.map { $0.tagName! }
答案 1 :(得分:0)
这会将NSSet
个Tag
个对象转换为[String]
:
let arr = nss.allObjects.map {$0.tagName ?? ""}
首先致电allObjects
以获取[AnyObject]
,然后使用map
获取tagName
。如果tagName
为nil
, nil合并运算符 ??
将使用空字符串""
替换它,否则它将被解包。< / p>
或者更简单地说,这些也适用于 Swift 1.2 :
let arr = map(nss, {$0.tagName ?? ""})
或
let arr = map(nss) {$0.tagName ?? ""}
在 Swift 2.0 :
let arr = nss.map {$0.tagName ?? ""}