gpt4 book ai didi

ios - 核心数据返回 NSArrays 而不是 NSStrings

转载 作者:可可西里 更新时间:2023-11-01 05:00:22 25 4
gpt4 key购买 nike

出于某种原因,所有 NSString 类型的属性都在我的 Article 对象中作为 NSArrays 返回。这是我检索它们的函数:

- (NSArray *)getSavedArticles
{
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
NSError *error = nil;
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Article" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSSortDescriptor *dateSort = [NSSortDescriptor sortDescriptorWithKey:@"last_opened" ascending:NO];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:dateSort]];
NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
return fetchedObjects;
}
我没有为它们创建 NSManagedObjectModel,而是使用 KVO 访问它们。

//self.data has the array returned from getSavedArticles
NSManagedObject *object = [self.data objectAtIndex:indexPath.row];
NSString *path = [object valueForKey:@"path"];
NSString* id = [object valueForKey:@"id"];

当我在变量 Pane 中查看此内容时,在 pathid 上,我看到 (__NSArrayI *) ... Variable is not a CFString. 打印其中任何一个的描述也会打印出打印数组时使用的括号。

我只是想知道这是否是排序描述符造成的?我仔细检查了输入这些对象的数据是否正确键入,并且我用来备份所有内容的 SQLite 数据库显示的是字符串。

我已经尝试在模拟器中重新安装该应用程序,并对其进行重置。我仍然得到一个 NSArray 而不是 NSString。

我真的不知道这里发生了什么。任何帮助将不胜感激。

编辑:我刚刚发现了其他有趣的东西。我又检查了一篇文章是否已保存,这次我没有得到文章路径的 NSArray:

- (NSString *)hasArticleSaved:(NSString *)id
{
NSString *path = nil;
NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
[fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"%K == %@", @"id", id]];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"Article" inManagedObjectContext:[self managedObjectContext]];
[fetchRequest setEntity:entity];
NSError *error = nil;
NSArray *fetchedObjects = [[self managedObjectContext] executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects.count > 0) {
NSManagedObject *savedArticle = [fetchedObjects objectAtIndex:0];
path = [savedArticle valueForKey:@"path"];
}
return path;
}

现在我真的很困惑。有没有人要?

最佳答案

你的问题在这里:

[self.data objectForKey:indexPath.row]

...因为 objectForKey: 正在寻找字符串键名,例如“路径”或“ID”。给它一个整数将产生错误或随机返回。

相反,您想要:

[self.data objectAtIndex:indexPath.row]

... 这将返回数组中给定索引处的托管对象。

关于ios - 核心数据返回 NSArrays 而不是 NSStrings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6616860/

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