gpt4 book ai didi

objective-c - XCode:发送到实例的无法识别的选择器

转载 作者:行者123 更新时间:2023-12-03 21:07:05 24 4
gpt4 key购买 nike

我收到以下错误:

"-[Order items]: unrecognized selector sent to instance 0x6b5f240"

我确实有一个名为 Order 的类,它看起来像这样:

订单.h

#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>

@class OrderItem;

@interface Order : NSManagedObject {
@private
}
@property (nonatomic, retain) NSNumber * orderID;
@property (nonatomic, retain) NSDate * date;
@property (nonatomic, retain) NSNumber * orderCode;
@property (nonatomic, retain) NSSet* items;

@end

订单.m

#import "Order.h"
#import "OrderItem.h"


@implementation Order
@dynamic orderID;
@dynamic date;
@dynamic orderCode;
@dynamic items;

...

如果我没看错的话,它不会扩展任何具有“items”方法的类?

是否有任何其他原因会导致我收到此类错误。更疯狂的是,这个项目是直接从以前的项目复制的,有一些小的编辑。我对这两个项目中的每个类都进行了文本比较,除了我所做的外观更改外,没有其他区别。

最佳答案

@dynamic items 告诉编译器您将为 items 提供方法。

因为这是在以前的项目中工作的,所以它一定在 .m 文件的某处有以下方法:

- (NSSet *)items {
// Appropriate code
}

如果您不想像这样提供自己的自定义 getter,请将 @dynamic items 更改为 @synthesize items,编译器将为您生成一个。

有关详细信息,请参阅 Apple 在此处提供的 The Objective-C Programming LanguageDeclared Properties 部分:https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocProperties.html

编辑
虽然上面的所有内容仍然适用于普通对象(并且可能仍然适用于此处),但我只是注意到这是 NSManagedObject 的子类。

在您的旧数据模型中,可能存在称为 items 的关系,因此 NSManagedObject 提供了适当的方法,并且 @dynamic 适合防止编译器警告。

如果在您的新数据模型中没有名为 items 的关系,则不会生成这些方法,这将导致您遇到的问题。

关于objective-c - XCode:发送到实例的无法识别的选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10474138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com