如何获取数组中对象的唯一 ID swift
How to get the unique id's of objects in an array swift
我有一个像这样的自定义 class -
class Event: NSObject
{
var eventID: String?
var name:String?
}
现在我有一个 Event
对象数组
var events = [Event]()
var event1 = Event()
event1.eventID = "1"
event1.name = "Anu"
var event2 = Event()
event2.eventID = "2"
event2.name = "dev"
var event3 = Event()
event3.eventID = "1"
event3.name = "Anu"
events.append(event1)
events.append(event2)
events.append(event3)
为了从数组中获取唯一的 eventID,我编写了这样的代码,效果很好 -
func getUniqueIDsFromArrayOfObjects(events:[Event])->NSArray
{
let arr = events.map { [=13=].eventID!}
let uniquearr:NSMutableArray = NSMutableArray()
for obj in arr
{
if !uniquearr.containsObject(obj) {
uniquearr.addObject(obj)
}
}
return uniquearr;
}
print(getUniqueIDsFromArrayOfObjects(events))
我想知道是否有任何替代方法可以比我使用的更有效地从对象数组中获取唯一 ID。可能是通过使用 NSPredicate
。
因为数组有 thousands
个对象,我的代码将进行更多迭代。
一个Set
是一个类似于数组的集合,可以防止重复。你可以这样做:
func getUniqueIDsFromArrayOfObjects(events:[Event])->[Event] {
return Array(Set(events.map { [=10=].eventID! }))
}
请注意,集合中项目的顺序是不确定的,因此如果您关心元素的顺序,您应该尝试不同的解决方案。
您可以使用 Set
来仅获取唯一值。我建议你的函数 return 也是一个 Swift 数组而不是 NSArray。
func getUniqueIDsFromArrayOfObjects(events:[Event])->[String]
{
let eventIds = events.map { [=10=].eventID!}
let idset = Set(eventIds)
return Array(idset)
}
let uniqueRecords = jobs.reduce([], {
[=10=].contains() ? [=10=] : [=10=] + []
})
我有一个像这样的自定义 class -
class Event: NSObject
{
var eventID: String?
var name:String?
}
现在我有一个 Event
对象数组
var events = [Event]()
var event1 = Event()
event1.eventID = "1"
event1.name = "Anu"
var event2 = Event()
event2.eventID = "2"
event2.name = "dev"
var event3 = Event()
event3.eventID = "1"
event3.name = "Anu"
events.append(event1)
events.append(event2)
events.append(event3)
为了从数组中获取唯一的 eventID,我编写了这样的代码,效果很好 -
func getUniqueIDsFromArrayOfObjects(events:[Event])->NSArray
{
let arr = events.map { [=13=].eventID!}
let uniquearr:NSMutableArray = NSMutableArray()
for obj in arr
{
if !uniquearr.containsObject(obj) {
uniquearr.addObject(obj)
}
}
return uniquearr;
}
print(getUniqueIDsFromArrayOfObjects(events))
我想知道是否有任何替代方法可以比我使用的更有效地从对象数组中获取唯一 ID。可能是通过使用 NSPredicate
。
因为数组有 thousands
个对象,我的代码将进行更多迭代。
一个Set
是一个类似于数组的集合,可以防止重复。你可以这样做:
func getUniqueIDsFromArrayOfObjects(events:[Event])->[Event] {
return Array(Set(events.map { [=10=].eventID! }))
}
请注意,集合中项目的顺序是不确定的,因此如果您关心元素的顺序,您应该尝试不同的解决方案。
您可以使用 Set
来仅获取唯一值。我建议你的函数 return 也是一个 Swift 数组而不是 NSArray。
func getUniqueIDsFromArrayOfObjects(events:[Event])->[String]
{
let eventIds = events.map { [=10=].eventID!}
let idset = Set(eventIds)
return Array(idset)
}
let uniqueRecords = jobs.reduce([], {
[=10=].contains() ? [=10=] : [=10=] + []
})