[英]Core Data table to NSArray
我有以下从Core Data
检索的Array
:
NSArray *dataArray = [context executeFetchRequest:request error:&error];
因此,我编写了以下代码来分别获取每一行数据,以将其发送到REST API:
for (NSString *str in dataArray) {
NSString *name =[dataArray valueForKey:@"name"];
NSString *dob = [dataArray valueForKey:@"dob"];
int gender =[[dataArray valueForKey:@"gender"]integerValue];
NSString *childId =[dataArray valueForKey:@"id"];
int response = [network sendName:name withDateOfBirth:dob andGender:gender forID:childId];
if (response == 200) {
// [self performSelectorOnMainThread:@selector(postSuccess) withObject:nil waitUntilDone:YES];
NSLog(@"Success");
}
}
但是它不起作用,因为我不知道数据如何存储在数组的每个索引中! 请提供帮助,如果我没有正确执行此操作,请告诉我一种更好的方法。
谢谢。
NSString *name =[dataArray valueForKey:@"name"];
这没有做您认为会做的事。 当发送到数组时, valueForKey:
返回一个数组,该数组与数组中所有项的给定键相对应。 因此,即使您将name
声明为NSString
,该行仍将为dataArray
所有项目分配一个“名称”值的数组。 后续行也一样。
您可能想要的是:
for (NSManagedObject *item in dataArray) {
NSString *name = [item valueForKey:@"name"];
...
更好的是,如果您有一个NSManagedObject
子类-称它为代表您所请求实体的Person
,您可以说:
for (Person *person in dataArray) {
NSString *name = person.name;
...
这导致了一个更简单的版本:
for (Person *person in dataArray) {
int response = [network sendName:person.name
withDateOfBirth:person.dob
andGender:person.gender
forID:person.id];
尽管我会更改该方法的名称以省去连词和介词。 -sendName:dateOfBirth:gender:id:
就足够了,您不需要“ with”,“ and”和“ for”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.