iOS PFObject迭代以获取所有键/值对

时间:2016-01-07 22:21:07

标签: objective-c parse-platform

我有一系列名为"客户"的PFObjects。它有15个值/键对。我想在运行时使用这些键/对值。如何迭代每对并将值赋给NSString?

下面我有一个可行的代码片段,但我必须在设计时输入密钥,这意味着如果我更改了任何内容,我必须更新代码。我不想要那个。我需要在运行时循环每个键/值对。

for (PFObject customer in customers) {
    NSString *str = [customer valueForKey:@"key"];
}

由于

2 个答案:

答案 0 :(得分:1)

我相信你有一个字典数组,这意味着你需要另外循环字典中的键,然后访问它们的值。 像这样:

NSArray *array = @[@{@"Key1" : @"Value1"}, @{@"Key2" : @"Value2"}, @{@"Key3" : @"Value3"}];
for (NSDictionary *dict in array) {
    NSLog(@"%@", dict.allKeys);
    for (NSString *key in dict.keyEnumerator) {
        NSLog(@"Key: %@, Value %@", key, dict[key]);
    }
}

这里,array是一个字典集合,这意味着当你循环它或者像array[0]那样访问它时,你将检索一个字典。您必须进一步访问字典的键,然后分别访问它们的值,例如:

NSDictionary *dict;
NSString *key = // get the key from somewhere, maybe a loop
NSString *value = dict[key];

最后,通过执行以下操作,可以循环遍历字典的值:

NSDictionary *dict;
for (NSArray *values in dict.allValues) {
    NSLog(@"Values: %@", values);
}

完整:

NSArray *array = @[@{@"Key1" : @"Value1"}, @{@"Key2" : @"Value2"}, @{@"Key3" : @"Value3"}];
for (NSDictionary *dict in array) {
    NSLog(@"%@", dict.allKeys);
    for (NSString *key in dict.keyEnumerator) {
        NSLog(@"Key: %@, Value %@", key, dict[key]);
    }
}

for (NSDictionary *dict in array) {
    for (NSArray *values in dict.allValues) {
        NSLog(@"Values: %@", values);
    }
}

答案 1 :(得分:0)

您有一个代表客户的PFObjects数组,并且您希望有一个表示其名称的字符串数组。您需要知道包含名称的客户对象上的属性名称,我们称之为“名称”,作为猜测。 (OP将其作为@“密钥”,但我认为这是混淆的结果)。

// replace @"name" with the name of the string attribute representing
// the customer's name (find it in your data browser) 
NSMutableArray *customerNames = [@[] mutableCopy];
for (PFObject *customer in customers) {
    [customerNames addObject:[customer valueForKey:@"name"]];
}
NSLog(@"The names are %@", customerNames);