Serialization 将数据与标识关联
假设我们有一千头牛排队挤奶。如果我们想知道某一特定奶牛的排队等待时间,那么仅仅测量队列入口和出口处的到达时间是不够的:奶牛不一定遵循FIFO协议。每个到达时间测量必须与heffer独有的RFID测量配对 通过选择特定的RFID数据,即特定的cow,两个到达时间可用于计算等待时间 问题Serialization 将数据与标识关联,serialization,Serialization,假设我们有一千头牛排队挤奶。如果我们想知道某一特定奶牛的排队等待时间,那么仅仅测量队列入口和出口处的到达时间是不够的:奶牛不一定遵循FIFO协议。每个到达时间测量必须与heffer独有的RFID测量配对 通过选择特定的RFID数据,即特定的cow,两个到达时间可用于计算等待时间 问题 组合数据的实践的名称是什么,或者在本例中,将RFID附加到测量数据点,如上述示例所示 我正在努力理解你的问题。也许您的示例的解决方案是: 您有一个自定义类 class Cow { var rfidTag: St
组合数据的实践的名称是什么,或者在本例中,将RFID附加到测量数据点,如上述示例所示 我正在努力理解你的问题。也许您的示例的解决方案是: 您有一个自定义类
class Cow {
var rfidTag: String?
var queueEnteredAt: Date?
var queueExitedAt: Date?
}
其中,rfidTag在已知后立即初始化
对于所有Cow,可以使用一个数组或一组Cow实例:
var cows: [Cow]
必须正确初始化
现在,当cow进入或退出队列时,将扫描RFID标签,并且必须访问相应的cow实例:
let scannedCow = cows.filter { $0.rfidTag == scannedRFIDtag }.first
调用一个函数来设置此cow的相应属性queueEnteredAt或QueueExitDat,例如:
最终,您可以对数组进行任何类型的统计。
PS:我不确定这是否有帮助,因为你的问题的标签是序列化的,并且在编辑你的问题时,你问了关于命名的问题
编辑:
如果RFID扫描仪在一个单独的线程上交付scannedRFIDtag,那么您可能确实存在序列化问题,因为两个线程可能会尝试访问cows数组并同时在那里设置属性。在这种情况下,您需要序列化访问,如果只需做很少的工作,可以通过将操作重定向到主队列来完成:
DispatchQueue.main.async {
// serialised operations
}
或通过设置串行访问队列:
private let serialAccessQueue = DispatchQueue(label: "com.xxx.yyy“)
在那里工作:
serialAlertQueue.sync {
// serialised operations
}
您提出了一个问题,但您的问题是什么?谢谢您的提问。希望现在一切都清楚了。如果没有,建议或问题将不胜感激
serialAlertQueue.sync {
// serialised operations
}