Objective c iOS如何从数组中读取值

Objective c iOS如何从数组中读取值,objective-c,ios,ios5,ios4,Objective C,Ios,Ios5,Ios4,这是一个数组的示例,我想从中获取值 coursesArray = [[NSMutableArray alloc]init]; // AR111: [coursesArray addObject:[[NSMutableDictionary alloc] initWithObjectsAndKeys: @"MUR",@"courseType", @"AR111",@"courseCode

这是一个数组的示例,我想从中获取值

coursesArray = [[NSMutableArray alloc]init];

// AR111:
[coursesArray addObject:[[NSMutableDictionary alloc] initWithObjectsAndKeys:
                           @"MUR",@"courseType",  
                           @"AR111",@"courseCode",
                           @"Arabic Communication Skills (I)",@"courseName",
                           @"3",@"creditHours",
                           @"",@"preRequisites",
                           @"63.000",@"coursePrice",
                           @"6.000",@"courseEPP",
                           @"This course aims at .",@"courseDetails",
                           nil]];
这是我的代码来获取它的值

NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];

int i = 0;
for (i = 0; i < [coursesArray count] ; i++) {

NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];

    [newManagedObject setValue:[[coursesArray objectAtIndex: i ]forKey:@"courseName"] forKey:@"courseName"];
}
这些值将添加到核心数据forKey:@“courseName”中

我认为,这是在一行上放太多代码的典型案例。我不认为这真的可以编译

让我们试着把它分成几个部分。我已取出代码的中心位,并将其替换为XX:

[newManagedObject setValue:XX forKey:@"courseName"];
这个看起来不错
setValue:forKey
是托管对象的有效方法

XX是:

[YY forKey:@"courseName"]
目前还不清楚这是否正确,但看起来不太好——方法名称似乎不正确

YY是:

[coursesArray objectAtIndex:i]
这很好,它返回一个可变字典。但是字典没有实现一个名为
forKey:
的方法。不过,它们确实实现了一个名为
objectForKey:
的方法,这正是您想要的

因此,您的更正行应该是:

[newManagedObject setValue:[[coursesArray objectAtIndex:i] objectForKey:@"courseName"] forKey:@"courseName"];
如果您正在编写大量这样的代码,那么使用属性来保存数据成员的自定义对象突然变得更有意义。到处都是,很快就看不懂了

我认为,这是在一行上放太多代码的典型案例。我不认为这真的可以编译

让我们试着把它分成几个部分。我已取出代码的中心位,并将其替换为XX:

[newManagedObject setValue:XX forKey:@"courseName"];
这个看起来不错
setValue:forKey
是托管对象的有效方法

XX是:

[YY forKey:@"courseName"]
目前还不清楚这是否正确,但看起来不太好——方法名称似乎不正确

YY是:

[coursesArray objectAtIndex:i]
这很好,它返回一个可变字典。但是字典没有实现一个名为
forKey:
的方法。不过,它们确实实现了一个名为
objectForKey:
的方法,这正是您想要的

因此,您的更正行应该是:

[newManagedObject setValue:[[coursesArray objectAtIndex:i] objectForKey:@"courseName"] forKey:@"courseName"];

如果您正在编写大量这样的代码,那么使用属性来保存数据成员的自定义对象突然变得更有意义。到处都是的forKey:很快就不可读了。

这是正确的
[newManagedObject setValue:[[coursesArray objectAtIndex:i]objectForKey:@“courseName”]forKey:@“courseName”]尝试重新表述您所写的内容,使其成为一个清晰的问题。类似于“如何读取…并将其设置为…?”这样的内容是否正确
[newManagedObject setValue:[[coursesArray objectAtIndex:I]objectForKey:@“courseName”]forKey:@“courseName”]尝试重新表述您所写的内容,使其成为一个清晰的问题。类似于“我如何阅读…并将其设置为…?”的内容,我正要将其分解并看到:“这是一个在一行上放置太多代码的经典案例”+1!!!我正要把它拆开,看到了这样一句话:“这是一个在一行上放太多代码的经典案例”+1!!!