TableView 的自定义复选框给出 NSManagedObject 错误

Posted

技术标签:

【中文标题】TableView 的自定义复选框给出 NSManagedObject 错误【英文标题】:Customized checkbox for TableView gives NSManagedObject error 【发布时间】:2014-03-15 19:38:57 【问题描述】:

我尝试为我的 TableView 设置一个自定义的附件复选框,但遇到了这个错误...

在 NSManagedObject 类型的元素上未找到读取字典元素的预期方法

我的 ViewController 的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    // Configure the cell...
    NSManagedObject *device = nil;
    if (tableView == self.searchDisplayController.searchResultsTableView)
    
        device = [searchResults objectAtIndex:indexPath.row];
    
    else
    
        device = [self.cart objectAtIndex:indexPath.row]; 
    

    if (cell.accessoryView == nil) 
    
        // Only configure the Checkbox control once.
        cell.accessoryView = [[Checkbox alloc] initWithFrame:CGRectMake(0, 0, 25, 43)];
        cell.accessoryView.opaque = NO;
        cell.backgroundColor = [UIColor clearColor];

        [(Checkbox*)cell.accessoryView addTarget:self action:@selector(checkBoxTapped:forEvent:) forControlEvents:UIControlEventValueChanged];

        [cell.textLabel setText:[NSString stringWithFormat:@"%@", [device valueForKey:@"cartProductName"]]];

        [(Checkbox*)cell.accessoryView setChecked: [device[@"checked"] boolValue] ];//<-- Errorline            

        // Accessibility

        [self updatetAccessibilityForCell:cell];

        return cell;
    

错误发生在setChecked: 行。

我的核心数据是:

购物车.h:

@interface Cart : NSManagedObject

@property (nonatomic, retain) NSString * cartProductName;

@end

购物车.m:

@implementation Cart

@dynamic cartProductName;

@end

我需要一个新的房产来完成吗?

我的 ViewController 的负责人:

#import "CartViewController.h"
#import "Checkbox.h"
#import "Cart.h"


@interface CartViewController ()
@property (strong) NSMutableArray *cart;

@end

@implementation CartViewController 
    NSArray *cartProducts;
    NSArray *searchResults;
@synthesize searchbar;

抱歉,我是编程界的新手……

【问题讨论】:

【参考方案1】:

[device[@"checked"] boolValue] 更改为[device.checked boolValue]

您访问的不是NSDictionary,而是NSManagedObject

【讨论】:

感谢您的帮助,但这也不起作用:-/错误:在“NSManagedObject *”类型的对象上找不到属性“已检查” 抱歉,您必须转换为实际的设备类型。 IE。 [((Device *)device).checked boolValue] 我尝试加入这个功能:developer.apple.com/library/ios/samplecode/Accessory/… 当我将 [((Device *)device).checked boolValue] 复制到代码中时,我可以将 'Device' 替换为 'device,但是编译器需要一个表达式... :- / 你知道需要哪种表达方式吗?

以上是关于TableView 的自定义复选框给出 NSManagedObject 错误的主要内容,如果未能解决你的问题,请参考以下文章

从 -tableView:cellForRowAtIndexPath: 计算“indexPath”处的自定义 UITableViewCell 高度:?

带有故事板的自定义静态 TableView - 单元格背景

具有多行 UILabel 的自定义 Tableview 单元格需要动态高度

一个 UIViewController 中的自定义单元格 tableview 和默认 UITableView

以编程方式从 collectionView 内的自定义 tableView 中进行 Segue

我需要在 TableView 中创建基于图像的自定义附件类型的示例代码