Ios BOOL属性上无法识别的选择器

Ios BOOL属性上无法识别的选择器,ios,nsobject,unrecognized-selector,Ios,Nsobject,Unrecognized Selector,我一直在为这个看似简单的问题绞尽脑汁。我有一个XYZObject类,我在其中声明: @property BOOL checked; 在我的视图控制器中,我导入对象,每当我使用“checked”时,应用程序都会很好地编译,但在使用“checked”时会在运行时中断,例如: XYZObject *tableitem = [myDictionary[currentCategory] objectAtIndex:indexPath.row]; if (tableitem.checked) {

我一直在为这个看似简单的问题绞尽脑汁。我有一个XYZObject类,我在其中声明:

@property BOOL checked;
在我的视图控制器中,我导入对象,每当我使用“checked”时,应用程序都会很好地编译,但在使用“checked”时会在运行时中断,例如:

XYZObject *tableitem = [myDictionary[currentCategory] objectAtIndex:indexPath.row];
if (tableitem.checked) {
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
在我删除并重新添加XYZObject类之前,这一切都很正常,所以我一直在进行调试,假设文件路径中的某些内容会把事情搞砸。但我可以在我的VC中单击“checked”,在“快速帮助”下,它会显示对XYZObject的正确引用。这就是确切的错误:

[__NSCFString checked]: unrecognized selector sent to instance
编辑/更新:

在一些帮助下,我意识到问题在于,当我将数据源从ViewController中的手动声明更改为导入Plist时,我完全放弃了我的XYZObject,并且没有考虑它。以下是我声明词典的原始方式:

XYZCategory *category1 = [[XYZCategory alloc]init]; category1.categoryArray = @"First Category"; [categoryArray addObject:category1];
XYZObject *object1 = [[XYZObject alloc]init]; object1.objectName = @"My String"; [objectArray addObject:object1];
myDictionary[category1.categoryArray] = objectArray;
当我切换到Plist时,代码更改为:

NSString *path = [[NSBundle mainBundle] pathForResource:@"myDictionaryPlist" ofType:@"plist"];
NSMutableDictionary *plistDictionary = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
objectArray = plistDictionary[@"First Category"];
myDictionary[category1.categoryArray] = objectArray;
然后,为了便于参考,XYZObject做出以下声明:

@property NSString *objectName;
@property BOOL checked;
所以字典的问题是,我只是为objectArray提取直接字符串,而不是一组XYZObject。我将继续测试,但我非常确定我只需要重新定义objectArray,使其成为一组基于从Plist中提取的内容的对象


但我也认为,由于我现在使用Plist创建一个字典(它被弹出到一个表中,其中键是节,值是行),我可以通过同时删除XYZCategory和XYZObject来简化事情。不确定这是否可行,但我将继续努力。

正如错误消息所暗示的,
tableitem
实际上是一个
NSString
,与您预期的相反


您可能以错误的方式填充词典。

正如错误消息所暗示的,
tableitem
实际上是一个
NSString
,与您预期的相反


您可能以错误的方式填充词典。

正如错误消息所暗示的,
tableitem
实际上是一个
NSString
,与您预期的相反


您可能以错误的方式填充词典。

正如错误消息所暗示的,
tableitem
实际上是一个
NSString
,与您预期的相反


您可能是以错误的方式填充字典。

如果我在If语句之前对tableitem运行NSLog,则输出为字符串。检查什么才能正常工作?我能够将我的新代码与一个运行正常的旧版本进行比较,事实上,这与我如何填充字典有关(我从直接定义字典切换到使用plist导入)。如果在If语句之前对tableitem运行NSLog,则输出是一个字符串。检查什么才能正常工作?我能够将我的新代码与一个运行正常的旧版本进行比较,事实上,这与我如何填充字典有关(我从直接定义字典切换到使用plist导入)。如果在If语句之前对tableitem运行NSLog,则输出是一个字符串。检查什么才能正常工作?我能够将我的新代码与一个运行正常的旧版本进行比较,事实上,这与我如何填充字典有关(我从直接定义字典切换到使用plist导入)。如果在If语句之前对tableitem运行NSLog,则输出是一个字符串。应该检查什么才能正常工作?我能够将我的新代码与一个运行正常的旧版本进行比较,事实上,这与我如何填充字典有关(我从直接定义它切换到使用plist导入)。您可以发布用于将该字典元素转换为XYZObject的代码吗?更新了OP@ElJayCan您可以发布用于将该字典元素转换为XYZObject的代码吗?更新了OP@ElJayCan您可以发布用于将该字典元素转换为XYZObject的代码吗?更新了OP@ElJayCan您可以发布用于将该字典元素转换为XYZObject?更新了OP@ElJay