我试图使用storyboard/segue来处理UITableView与标准转换以及详细信息披露按钮之间的转换.在这里阅读了几个不同的帖子后,我以这种方式设置了我的项目:
实施accessoryButtonTappedForRowWithIndexPath如下:
-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"DetailSegue" sender:self];
}
Run Code Online (Sandbox Code Playgroud)这很好用,我prepareForSegue: sender:按预期调用.麻烦的是,我需要知道所选元素的indexPath.来自UITableViewCell的segue检索indexPath,如下所示:
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我尝试调用accessoryButton时,返回null.
我基于这些代码的原始问题是:详细信息披露按钮和Segues
是否有tableView的方法返回accessoryButtons的indexPath?我是否需要以其他方式访问indexPath?
我试图编写一个方法,尝试使用变量(作为NSXMLParser的一部分)基于谓词检索对象.代码如下所示:
我在类中定义了这些变量:
@property (strong, nonatomic) NSManagedObjectContext *managedObjectContext;
@property (strong, nonatomic) NSString *model;
@property (strong, nonatomic) NSString *element;
Run Code Online (Sandbox Code Playgroud)
现在在方法中,我设置了这样的请求:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:self.model inManagedObjectContext:self.managedObjectContext];
[request setEntity:entity];
Run Code Online (Sandbox Code Playgroud)
现在面临的挑战 - 我希望能够做到的是:
// DOES NOT WORK
[request setPredicate:[NSPredicate predicateWithFormat:@"%@ == %@", self.element,string]];
Run Code Online (Sandbox Code Playgroud)
但这并没有带来任何结果.经过一番捣乱,我注意到这确实有效:
if ( [self.element isEqualToString:@"name"] ) {
[request setPredicate:[NSPredicate predicateWithFormat:@"name == %@", string]];
}
Run Code Online (Sandbox Code Playgroud)
这告诉我,我self.element的设置是正确的(我认为?)但是谓词不喜欢表达式的左侧是变量.
我也尝试过:
[request setPredicate:[NSPredicate predicateWithFormat:@"%s == %@", [self.element UTF8String],string]];
Run Code Online (Sandbox Code Playgroud)
...只是为了看看它是否更喜欢一个字符串.我也无法做到这一点.
我正在尝试甚至可能吗?我已经尽可能多地阅读了Core Data文档,我找不到任何以这种方式执行的示例代码,但我也没有发现任何可以说它不可能的内容.
编辑:现在工作代码:
[request setPredicate:[NSPredicate …Run Code Online (Sandbox Code Playgroud)