原因:' - [Arr setTime:]:无法识别的选择器发送到实例0x60400027ca80'“
Arr是数据模型实体,只包含一个属性(类型为字符串的'time'),'array'不为空。
我认为必须在viewDidLoad中使用'@objc func updateTime()'和'Timer'做一些事情
var array = [Arr]()
var ringTime = Arr()
override func viewDidLoad() {
super.viewDidLoad()
Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
if array.contains(ringTime){
print("HELLO")
}
}
@objc func updateTime() {
ringTime.time = DateFormatter.localizedString(from: NSDate() as Date, dateStyle: .none, timeStyle: .short)
}
func getData() {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
do {
array = try context.fetch(Arr.fetchRequest())
items = try context.fetch(Item.fetchRequest())
}catch{
print("failed to get the data")
}
}
在其他viewcontroller中(将数据添加到Arr): -
@IBAction func savePressed(_ sender: UIBarButtonItem) {
let entity = Item(context: context)
let entity2 = Arr(context: context)
entity.time = timeLbl.text
entity.isOn = true
entity2.time = timeLbl.text
saveData()
self.dismiss(animated: true, completion: nil)
}
这些是进一步的细节: -
libsystem_kernel.dylib`__pthread_kill:
0x10d0b9d38 <+0>: movl $0x2000148, %eax ; imm = 0x2000148
0x10d0b9d3d <+5>: movq %rcx, %r10
0x10d0b9d40 <+8>: syscall
0x10d0b9d42 <+10>: jae 0x10d0b9d4c ; <+20>
0x10d0b9d44 <+12>: movq %rax, %rdi
0x10d0b9d47 <+15>: jmp 0x10d0b2caf ; cerror_nocancel
-> 0x10d0b9d4c <+20>: retq
0x10d0b9d4d <+21>: nop
0x10d0b9d4e <+22>: nop
0x10d0b9d4f <+23>: nop
答案 0 :(得分:0)
由于异常的确切位置未知,因此问题必须是在ringTime
中比较array
,
if array.contains(where: { (arr) -> Bool in
arr.time == ringTime.time
}) {
print("Hello")
}
我可以通过更多信息为您提供更多帮助。
答案 1 :(得分:0)
我没有看到Arr
的实施。
猜测@objc
变量前面可能缺少time
。