我有一个主细节控制器,其核心数据从一个实体(即作者)获取对象,然后让您详细查看其中一个对象,即。一位作者。
作者对象与第二个实体Books有一对多的关系。对于每位作者,我想显示他们的书籍的可点击列表。
我的第一个问题是在显示作者页面之后,我该如何获取图书清单。
最后,我想将标签或按钮中的列表显示为可点击的文本,可能使用NSAttributed Text,但现在很乐意只检索书籍列表。
作者与书籍有关系,名为 book ,这是一对多,书籍与作者的互惠关系,名为作者,即一本一个。
我将books.h(数据文件)导入authorsVC.h和authorsDetail.h控制器。
authors.h文件具有如下属性:
@property (nonatomic, strong) Books *authorBook;
以下代码不会引发异常,但会注销null。
NSLog(@"books %@", _authorBook.bookname); //logs as null even when there are books for the author.
此代码抛出显示的异常:
NSLog(@"books %@", _author.book.bookname);
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_NSFaultingMutableSet bookname]: unrecognized selector sent to instance
答案 0 :(得分:0)
核心数据中的多对多关系实现为NSSet
个实例。在您的情况下Author
- > Book
是一对多关系,_author.book
是NSSet
个Book
个实例 - 这是书籍的集合。 Book
可能有一个名为bookName
的属性,但NSSet
没有。
如果你只想要书名,你可以使用
_author.book.valueForKey[@"bookName"]
这将询问集合中Book
的每个bookName
并返回一组新的图书名称。
答案 1 :(得分:0)
以下代码可以解决问题。与汤姆的情况类似,根据我的评级,我不允许提升,但有一些调整,因为它不接受点符号。 valueForKey用于数组。
NSSet *books = _book.author;
NSArray *booksarr = [[files valueForKey:@"author"] allObjects];
NSString *bookstr = [booksarr componentsJoinedByString:@","];
在字符串中,您可以根据需要显示它。