- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试获取核心数据对象并从不是由核心数据对象组成的 UITableView
加载它。它只是一个用预定数组制作的 UITableView
,但我想在 Core Data 中加载一个与单元格 detailTextLabel
同名的对象。我尝试关注 this tutorial加载特定值,但它不起作用:它崩溃或告诉我我的实体是 nil
,但事实并非如此。
所以基本上我有一个 UITableView
并且它加载了这个数组:
array = @[@"publication 1",@"publication 2", etc]
然后,当用户选择单元格时,我希望它加载基于单元格 detailText
的文档,但它总是加载对象 indexPath
是什么,而不是基于单元格 detailText
。所以说在主视图 Controller 中将预定数组加载到 TableView 中,我点击备忘录 24,但它的索引是 (0,2) 它将加载一个对象,但它会加载下载实体中的对象具有与 Memo 24 标题相同的 indexPath
(无论发布在 0,2 处)编号。
这是我的代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
[self loadPublicationLocallyWithPubAtIndex:indexPath withTitle:cell.detailTextLabel.text];
}
- (void)loadPublicationLocallyWithPubAtIndex:(NSIndexPath *)indexPath withTitle:(NSString *)pubNumber {
NSManagedObjectContext *selectedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSString *phrase = nil; // Document password (for unlocking most encrypted PDF files)
NSString *filePath;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"PDFs"];
filePath = [filePath stringByAppendingPathComponent:[selectedObject valueForKey:@"puburl"]]; assert(filePath != nil); ;
NSLog(@"Local path is : %@", filePath);
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath])
{
//File exists
NSData *data = [[NSData alloc] initWithContentsOfFile:filePath];
if (data)
{
//load document
}
}
}
它适用于我所有使用核心数据填充的 View Controller ,无论 indexPath
单元格是什么,它仍然会检索正确的对象,所以这让我相信它与[self.fetchedResultsController objectAtIndex:];
部分,所以我什至尝试过:
NSIndexPath *selectedItem = [self.fetchedResultsController indexPathForObject:cell.detailTextLabel.text];
在 didSelectRowAtIndexPath:
中,但它也不起作用。
如何根据单元格 detailTextLabel
而非其 indexPath
加载对象?
最佳答案
如果您从静态数组填充数组,那么您可能不需要使用获取结果 Controller 。相反,您应该只执行提取以获取相关的 NSManagedObject。为确保提取仅获取相关对象,请使用谓词。
假设您的 NSManagedObjects 在 Publication
实体中,相关属性是 title
。你应该像这样构建一个 fetch:
NSManagedObjectContext *context = self.managedObjectContext; // or however your context is obtained
NSManagedObject *selectedObject;
NSFetchRequest *fetch = [NSFetchRequest fetchRequestWithEntityName:@"Publication"]; // amend entity name as appropriate
fetch.predicate = [NSPredicate predicateWithFormat:@"title == %@",pubNumber];
NSError *error;
NSArray *results = [context executeFetchRequest:fetch error:&error];
if (results == nil) {
NSLog(@"Fetch error %@, %@", error, [error userInfo]);
abort();
} else {
if ([results count] == 0) {
NSLog(@"Publication not found");
} else {
// (note, should probably also check for count > 1 and handle accordingly)
selectedObject = results[0];
// then carry on with the remaining code from loadPublicationLocally....
NSString *phrase = nil; // Document password (for unlocking most encrypted PDF files)
NSString *filePath;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"PDFs"];
filePath = [filePath stringByAppendingPathComponent:[selectedObject valueForKey:@"puburl"]]; assert(filePath != nil); ;
// ... etc etc.
}
}
关于ios - 从不是由 Core Data 生成的 UITableViews 获取 Core Data 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31102423/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
notificationCenterPublisher = NotificationCenter.default .publisher(for: .NSManagedObjec
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
notificationCenterPublisher = NotificationCenter.default .publisher(for: .NSManagedObjec
我有以下 Rust 代码: #[inline(never)] fn x() -> i32 { 21 } pub fn main() -> i32 { x() } 如果没有优化 (-C
假设我的 ASPX 页面没有内联 C# 代码块。 所以,我可以安全地设置 ...在我的 web.config 文件中,不用担心编译错误。 就性能而言,使用以下设置是否会有任何损失? 即“自动”检测
应用程序.js var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor: 'black', l
基本上,我正在为实现多级优先级队列的 xv6 内核实现一个调度程序。我有一个严重的问题,我不明白,我类(class)的助教不明白,我已经错过了这个项目的最后期限,所以现在帮助我不会给我任何加分 - 但
我想避免 git 自动 merge 我的 composer.json。这样我就可以在 develop 分支中有一个使用 dev-develop 包的 composer.json,而 master 中的
当比较两种不同的算法实现时(因此,不关心它们的绝对性能,而只关心相对性能)我是否最好强制 Java 只运行解释代码? 也就是说,打开 -Xint 标志会更好吗? 最佳答案 我不认为禁用 JIT 会更好
class A{ const size_t number; public: A(size_t number): number(number) {} void f(){
问题 寻找在以下之间切换的方法: 总是 从不 仅在静默模式下 仅当不处于静默模式时 这些选项在手机上的路径---菜单>>设置>>声音>>振动---找到。 通过手机导航很容易更改(顺便说一句,我的手机是
如何设置电源设置关闭:从不(关闭显示器=从不,让计算机进入休眠状态=从不),通过c#代码 最佳答案 这个问题中给出的链接可以告诉你一个方法。 Programmatically change Windo
我是一名优秀的程序员,十分优秀!