ios - Realm 更新 Swift 无法识别的选择器发送到实例

标签 ios swift realm

我正在使用 Realm 制作一个简单的列表应用程序,但在制作更新方法时遇到了问题。这是我的代码。

Task.swift

class Task: Object {
    dynamic var id = 0
    dynamic var name = ""
    dynamic var content = ""
    dynamic var createdDate = NSDate()

    override class func primaryKey() -> String? {
        return "id"
    }

    class func autoIncrement() -> Int{
        let realm = try! Realm()
        let TaskList = realm.objects(Task.self).sorted(byKeyPath: "id", ascending: true)
        let Last = TaskList.last
        if TaskList.count == 0{
            return 0
        } else{
            return Last!.id + 1
        }
}

TaskController.swift

static func updateTask(name:String, content:String, oldTask:Task){
    RealmController.updateTask(name:name, content:content, task: oldTask)
    //RealmController.getData(taskList: &appDelegate.task)
}

RealmController.swift

static func updateTask(name:String, content:String, task: Task){
    let taskId = task.id
    let RealTask = realm.objects(Task.self).filter("id == %@", taskId).first
    try! realm.write {
            RealTask?.name = name
            RealTask?.content = content
    }
}

错误信息。

2017-02-10 17:13:57.179 RealmTest1[7156:9710210] -[RealmTest1.EditViewController saveTask:]: unrecognized selector sent to instance 0x7fd06351eaa0 2017-02-10 17:13:57.183 RealmTest1[7156:9710210] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RealmTest1.EditViewController saveTask:]: unrecognized selector sent to instance 0x7fd06351eaa0'

堆栈跟踪

0   CoreFoundation                      0x0000000107c00d4b __exceptionPreprocess + 171<br/>
1   libobjc.A.dylib                     0x000000010766221e objc_exception_throw + 48<br/>
2   CoreFoundation                      0x0000000107c70f04 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132
3   CoreFoundation                      0x0000000107b86005 ___forwarding___ + 1013<br/>
4   CoreFoundation                      0x0000000107b85b88 _CF_forwarding_prep_0 + 120<br/>
5   UIKit                               0x00000001080268bc -[UIApplication sendAction:to:from:forEvent:] + 83<br/>
6   UIKit                               0x00000001081acc38 -[UIControl sendAction:to:forEvent:] + 67<br/>
7   UIKit                               0x00000001081acf51 -[UIControl _sendActionsForEvents:withEvent:] + 444<br/>
8   UIKit                               0x00000001081abe4d -[UIControl touchesEnded:withEvent:] + 668<br/>
9   UIKit                               0x0000000108094545 -[UIWindow _sendTouchesForEvent:] + 2747<br/>
10  UIKit                               0x0000000108095c33 -[UIWindow sendEvent:] + 4011<br/>
11  UIKit                               0x00000001080429ab -[UIApplication sendEvent:] + 371<br/>
12  UIKit                               0x000000010882f72d __dispatchPreprocessedEventFromEventQueue + 3248<br/>
13  UIKit                               0x0000000108828463 __handleEventQueue + 4879<br/>
14  CoreFoundation                      0x0000000107ba5761 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17<br/>
15  CoreFoundation                      0x0000000107b8a98c __CFRunLoopDoSources0 + 556<br/>
16  CoreFoundation                      0x0000000107b89e76 __CFRunLoopRun + 918<br/>
17  CoreFoundation                      0x0000000107b89884 CFRunLoopRunSpecific + 420<br/>
18  GraphicsServices                    0x000000010d8caa6f GSEventRunModal + 161<br/>
19  UIKit                               0x0000000108024c68 UIApplicationMain + 159<br/>
20  RealmTest1                          0x000000010691518f main + 111<br/>
21  libdyld.dylib                       0x000000010a44d68d start + 1<br/>

重启App后,内容已经改变。 我该如何解决?

最佳答案

堆栈跟踪似乎与您发布的任何代码都无关。问题是 -[UIControl sendAction:to:forEvent:] 正在调用未实现该对象的对象上的方法。这有两个正常原因:

  1. 您只是在注册触摸处理程序时传入了错误的对象。
  2. 您注册为处理程序的对象已被释放,一些不相关的对象已分配到同一位置。在“Scheme -> Run -> Diagnostics”中启用“Zombie Objects”将使这种情况以更多信息的方式失败。

关于ios - Realm 更新 Swift 无法识别的选择器发送到实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42154567/

相关文章:

ios - 自定义 UITableViewCell 内的圆形 UIView 底角

将默认数据库路径更改为组路径后,iOS RealmSwift 不会更新模型

android - 具有多个 RealmObjects 的 RealmBaseAdapter

java - 无效参数 : Token Reason: iOS device tokens must be no more than 400 hexadecimal characters

android - Paypal 服务器到服务器验证问题

objective-c - 如何以编程方式在 MacOS 中隐藏全屏应用程序

swift - 绘制部分圆

ios - 偶尔创建加密 Realm 对象失败的原因可能是什么?

ios - 日期比较 NSPredicate

iphone - 如何在 iOS 中自定义 UISegmentedControl?