【发布时间】:2013-09-07 22:10:26
【问题描述】:
我有一个 iOS 应用程序,它从服务器中提取数据并使用 CoreData 将其持久化。我有一个 UITableView,我试图只从给定的核心数据属性中选择部分来填充它。
在填充表格之前,我循环浏览数据并将我想要的内容传递给NSMutableArray。问题是当我找到我想要的项目时,它没有被添加到数组中。
我在我的 .h 文件中声明数组,如下所示...
@property (strong, nonatomic) NSMutableArray *theNewSource;
并在.m文件中合成它
@synthesize theNewSource = _theNewSource;
方法如下……
-(NSMutableArray *)setDataSourceArray
{
for(int i = 0; i < rcount ; i++)
{
NSIndexPath *countingInteger = [NSIndexPath indexPathForItem:i inSection:0];
NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:countingInteger];
NSString *action = [object valueForKey:@"theActionName"];
if (![action isEqual:@"Login"])
{
[_theNewSource addObject:action];
}
}
NSLog(@"the array is now %@",_theNewSource);
return _theNewSource;
}
我在[_theNewSource addObject:action] 行中设置了一个断点。我可以在控制台中看到变量action 确实有一个值,但它从未添加到_theNewSource 数组中......我确定这是Objective C 101,但我无法弄清楚。请帮忙!
【问题讨论】:
-
顺便说一句 - 这似乎需要做很多工作,因为您可以在 NSFetchedResultsController 的获取请求中将其设置为谓词。
-
Abizern,我浏览了一些 CoreData 文档,因为我认为有一种方法可以使用 fetch 请求但我忽略了谓词。 Jsdodgers 解决了我的问题,但如果可以的话,我想避免这种方法。你能给我举一个如何使用谓词的例子吗?如您所见,我从中提取的 CoreData 属性是“theActionName”。当我从属性中获取数据时,我只想省略“登录”操作可以使用谓词吗?
-
复制了大约 100 个其他人。必须创建数组。
标签: ios objective-c uitableview core-data nsmutablearray