1

私は iOS 開発と DBAccess フレームワークの両方の初心者であり、おそらく本当に簡単に解決できる問題を抱えていますが、それを提示する方法がよくわかりません。

私の DBObject クラス拡張:

ヘッダ

//FavouriteProduct.h

#import <UIKit/UIKit.h>
#import <DBAccess/DBAccess.h>
#import "Product.h"

@interface FavouriteProduct : DBObject
@property Product *product;
@property NSString *userID;
@property NSString *productID;
@end

実装

//FavouriteProduct.m

#import "FavouriteProduct.h"
#import "Product.h"

@implementation FavouriteProduct
@dynamic productID;
@dynamic userID;
@dynamic product;
@end

Product.m ファイル:

@implementation Product{
NSString *id;
float price;
float discount;
NSDictionary *ownerProduct;
NSDictionary *originalDict;
}

//I create my Product objects from JSON
-(instancetype)initWithJSONDictionary:(NSDictionary *)JSONDict{
  self = [super init];
  if (self) {
      [self setValuesForKeysWithDictionary:JSONDict];
  }
  originalDict = [[NSDictionary alloc] initWithDictionary:JSONDict];
  return self;
}
// + some more getter methods

Product.h ファイルには、getter メソッドと上記の initWithJSONDictionary メソッドのインターフェイス宣言が含まれています。

次のコードを使用して、製品のプロパティを設定しようとしました:

FavouriteProduct *fav = [FavouriteProduct new];
fav.product = self.product; //self.product is an object of Product class
fav.productID = self.product.getProductID;
[fav commit];

次のエラーが表示されます: キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[FavouriteProduct setProduct:]: 認識されないセレクターがインスタンス 0x16e5bf10 に送信されました'

私もこの方法で試しました:

FavouriteProduct *fav = [FavouriteProduct new];
fav.product = [[Product alloc]initWithJSONDictionary:self.product.getOriginalDictionary]; //set a Product object from NSDictionary
fav.productID = self.product.getProductID;
[fav commit];

同じエラーが発生します。

私は何が欠けていますか?お時間をいただきありがとうございます。

4

1 に答える 1