每当我尝试更新核心数据模型的值时,我都会不断收到此错误。这是我的模特
import Foundation
import CoreData
@objc(Habit)
class Habit: NSManagedObject {
@NSManaged var name: String
@NSManaged var trackingType: NSNumber
}
这是我的代码tableViewCell
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
if selected {
self.accessoryType = UITableViewCellAccessoryType.Checkmark
if self.habit? != nil {
self.habit?.trackingType = index
}
} else {
self.accessoryType = UITableViewCellAccessoryType.None
}
// Configure the view for the selected state
}
我不断收到错误消息 “由于未捕获的异常’NSInvalidArgumentException’而终止应用程序,原因:’-[Habit
setTrackingType:]:无法识别的选择器发送到实例0x7fdcbb002c90’”
在self.habit?.trackingType = index行
我正在努力解决最近2天的问题。
编辑:
用以下方式初始化模型习惯
func getHabits() -> [AnyObject]{
let entityDescription =
NSEntityDescription.entityForName("Habit",
inManagedObjectContext: managedObjectContext!)
let request = NSFetchRequest()
request.entity = entityDescription
//
// let pred = NSPredicate(format: "(trackingType != -1)")
// request.predicate = pred
var error: NSError?
var objects = managedObjectContext?.executeFetchRequest(request,
error: &error)
return objects!;
}
返回的列表可在应用程序中的任何地方使用。基本上,我从列表中获取项目并更新其属性,然后再次保存
好的,因此得到错误的原因很可能是因为所引用的对象self.habit
不是Habit
对象。找出对象实际的最简单方法是调用:
print(NSStringFromClass(habit.class))
对于核心数据和自定义,NSManagedObjects
您需要确保实体:“习惯”(在数据模型中)具有设置为“习惯”的类。这可以确保Core
Data将具有“
Habit”的实体描述的获取的对象强制转换为Habit类。如果您不这样做,则getHabits
函数将返回NSManagedObject
s
的数组而不是s的数组。Habit
如果是这种情况,则代码:println(NSStringFromClass(habit.class))
将向调试器输出“
NSManagedObject”。
附带说明,从Core Data数据库获取对象时,您确实需要检查错误。添加行:
if objects? == nil {
print("An error occurred \error.localisedDescription")
}
如果有任何错误,请原谅我,我通常使用Objective-C。
编辑:为了纠正Failed to call designated initializer on NSManagedObject class 'X'
错误。如果未正确实例化,则会引发此错误NSManagedObject
。您一定不能打电话[[MyManagedObject alloc] init];
,initWithEntity:insertIntoManagedObjectContext
而必须打电话:
MyManagedObject *obj = [[MyManagedObject alloc] initWithEntity:[NSEntityDescription entityForName:@"MyManagedObject" inManagedObjectContext:context] insertIntoManagedObjectContext:context];
如果您不希望将对象obj
插入上下文,则可以通过nil
上下文参数传递。但是,如果要撤消管理并具有将对象保存到数据库的功能,则需要将其与上下文关联。
如果要自定义对象的初始化,则可以覆盖awakeFromInsert
和awakeFromFetch
方法/函数。
问题内容: 我正在尝试从字典中获取特定键的值,但我得到了一个[[__NSCFArray objectForKey:]:无法识别的选择器发送到实例” 我NSLog我的头像字典,我的结果是: 问题答案: 问题是您没有。的计数为1,并包含。 要遍历数组中的所有项目,请枚举数组。 注意:我也从[]语法切换到了。我比较喜欢
问题内容: 我已经以编程方式创建了并添加到其中: 但是当我触摸视图时,Xcode抛出错误: 2016-07-13 09:24:29.918 Draft_Hypa_02 [661:83024]-[Draft_Hypa_02.ViewController handleTap:]:无法识别的选择器已发送到实例0x17d94a10 2016-07-13 09:24:29.921 Draft_Hypa_02
问题内容: 我在尝试让用户按下UIButton时遇到问题。我不断收到错误消息:无法识别的选择器已发送到实例 对于Swift方法,例如传递给选择器方法的正确字符串是什么?是“ buttonClick”,“ buttonClick:”,“ buttonClickSender:”还是其他? 问题答案: 您正在对该操作使用无效的方法签名。您正在提供,但该方法有一个参数,因此签名应为 有关如何设置选择器格式
问题内容: 我得到我的iOS应用程序错误。我尝试根据其他类似主题中提到的答案解决问题,但失败了。请查看下面的代码,并为此提供帮助。 谢谢 问题答案: 这样写选择器。 Swift 2.3或更低版本。 迅捷3 注意: 一种建议是面糊方法名称始终以小写而不是大写开头。因此,如果您使用而不是,那就更糟了。
问题内容: 我看不到以下按钮为何引发错误:2014-08-13 00:29:57.674 view1 [26581:842344]-[view1.ViewController buttonAction:]:无法识别的选择器已发送至实例0x797731c0 2014-08-13 00:29:57.677 view1 [26581:842344] * 由于未捕获的异常’NSInvalidArgumen
问题内容: 我正在使用最新的SDK开发iOS 5.0+应用程序。 我收到此代码一个非常奇怪的错误: 这是我的日志: 看来是。但是我不明白,如果是为什么我在日志上看不到。 我第二次运行该方法时第一次遇到此错误,我没有任何错误。这是我的日志: 顺便说说: 有什么建议吗? 也许某个地方… 问题答案: 我对JSON解释器疯狂使用NSNull的解决方案是在NSNull上创建一个类别,在该类别中我定义inte