0
我寧願用Person
Struct
,但我因爲它沒有確認到AnyObject
,我不能NSCountedSet
斯威夫特:NSCountedSet與地圖
class Person: AnyObject {
var name: String = ""
var age: Int = 0
var score: Int = 0
}
let personA = Person()
personA.name = "john"
let personB = Person()
personB.name = "larry"
let personC = Person()
personC.name = "jack"
let personD = Person()
personD.name = "bob"
var people:[AnyObject] = [personD, personC, personA, personB, personC, personA, personC, personD, personD]
let countedPeople = NSCountedSet(array: people) //
使用它,我想分配「分數」每個對象的屬性對每個對象的計數NSCountedSet
我想用Map
來做到這一點。下面的代碼不能編譯。
let peopleWithUpdatedScore = countedPeople.map{(var person: Person) -> Person in
// I would like to assign the count of each Object as the persons score.
person.score = countForObject(person)
return person
}
我得到以下錯誤:
error: cannot convert value of type 'Person -> Person' to expected argument type '(Element) -> _'
let peopleWithUpdatedScore = countedPeople.map{(var person: Person) -> Person in
問題1:如何解決錯誤,實現什麼,我試圖做的?
問題2:我可以使用Struct
而不是Person
的class
?
謝謝。有沒有一種方法可以使用Struct? – user1107173
你將不得不使用一個類,因爲NSCountedSet是Cocoa/Objective-C,並且看不到Swift結構。 http://www.apeth.com/swiftBook/apa.html#_objective_c_objects_and_swift_objects – matt
@ user1107173:我想你應該在Swift中編寫自己的'CountedSet'版本。 –