0

我从以下内容Array中检索到Core Data

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");

        }
    }

但它不起作用,因为我不知道数据是如何存储在数组中的每个索引中的!请帮忙,如果我没有正确执行此操作,请告诉我更好的方法。

谢谢。

4

1 回答 1

1
NSString *name =[dataArray valueForKey:@"name"];

这不会做你认为它会做的事情。valueForKey:,当发送到数组时,返回数组中所有项的与给定键对应的值的数组。因此,dataArray尽管您声明nameNSString. 后续行也是如此。

您可能想要的是:

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”。

于 2013-08-21T14:08:14.617 回答