2015-03-16 4 views
0

Я запрашивая объект типа NSArray называют сообщения от моего внутреннего интерфейса на parse.com который выглядит следующим образом:Как перестроить массив объектов

self.messages = (
"<lean: 0x7fcf98665140, objectId: vglE1UJ5KI, localId: (null)> {\n messageBody = Jj;\n recipientId = XvvxETqjph;\n senderId = XvvxETqjph;\n timestamp = \"1424991590106.210938\";\n}", 
"<lean: 0x7fcf98667940, objectId: rgBFYBMKlU, localId: (null)> {\n messageBody = \"test 3 from ian\";\n recipientId = XvvxETqjph;\n senderId = Hoy7UjLzOh;\n timestamp = \"1424631667110.638184\";\n}", 
"<lean: 0x7fcf98667f30, objectId: hB5uhwsYsu, localId: (null)> {\n messageBody = \"test 2 from user1\";\n recipientId = XvvxETqjph;\n senderId = VQzxWbDnal;\n timestamp = \"1424630904935.162109\";\n}", 
"<lean: 0x7fcf986685b0, objectId: dOe2B9oq5b, localId: (null)> {\n messageBody = \"test 1\";\n recipientId = XvvxETqjph;\n senderId = XvvxETqjph;\n timestamp = \"1424630808309.478027\";\n}" 
) 

Таким образом, ее в основном массив словаря объектов. Как переформатировать это как обычный массив словарей который выглядит следующим образом:

self.messages = (
"{\n objectId: vglE1UJ5KI;\n messageBody = Jj;\n recipientId = XvvxETqjph;\n senderId = XvvxETqjph;\n timestamp = \"1424991590106.210938\";\n}", 
"{\n objectId: rgBFYBMKlU;\n messageBody = \"test 3 from ian\";\n recipientId = XvvxETqjph;\n senderId = Hoy7UjLzOh;\n timestamp = \"1424631667110.638184\";\n}", 
"{\n objectId: hB5uhwsYsu;\n messageBody = \"test 2 from user1\";\n recipientId = XvvxETqjph;\n senderId = VQzxWbDnal;\n timestamp = \"1424630904935.162109\";\n}", 
"{\n objectId: dOe2B9oq5b;\n messageBody = \"test 1\";\n recipientId = XvvxETqjph;\n senderId = XvvxETqjph;\n timestamp = \"1424630808309.478027\";\n}" 
) 
+0

Мы будем старыми друзьями на эту тему (:-)). Я думаю, что я правильно ответил на этот вопрос здесь http://stackoverflow.com/questions/29053822/how-to-restructure-object-ofdnsaries/29054387#29054387 и был немного удивлен, что вы не видели это так. Возможно, это связано с тем, что неопределенность в отношении этой темы сохраняется. Надеюсь, мой ответ ниже лучше объяснит. – danh

+0

Нет, это не «в основном массив объектов словаря». Это массив PFObjects, где PFObject - это настраиваемый объект, который реализует некоторые словарные методы и имеет метод описания, который выводит информацию, которая выглядит как словарь. Когда вы регистрируете объект и показываете его с помощью спецификатора формата «% @», он вызывает метод «описание» объекта, и это то, что вы видите. Результат метода 'description' может или не может отражать внутреннюю структуру описываемого объекта. –

ответ

1

PFObject вернулся из разбора очень похож на словарь, поскольку он отвечает на allKeys и objectForKey: и setObject:forKey:, и так далее. Я видел несколько опрошенных на SO confused тем, как PFObject реализует description и, следовательно, как он печатает на консоли, что делает его менее похожим на словарь, чем может быть.

Во всяком случае, если по какой-то причине один действительно должен иметь NSArray из NSDictionaries, а не NSArray словарных подобных объектов, то они могли бы использовать такой код:

- (NSDictionary *)dictionaryFromPFObject:(PFObject *)pfObject { 
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; 
    for (NSString *key in [pfObject allKeys]) { 
     dictionary[key] = [pfObject objectForKey:key]; 
    } 
    return dictionary; 
} 

... и назвать его от блока завершения поиска следующим образом:

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    if (!error) { 
     NSMutableArray *array = [NSMutableArray array]; 
     for (PFObject *pfObject in objects) { 
      [array addObject:[self dictionaryFromPFObject:pfObject]]; 
     } 
    } 
}]; 
+0

Спасибо, дан. Im фактически просто использует parse.com для прототипирования, прежде чем я пошел к aws, и я действительно не хотел возиться с parse, но я возьму этот подход – ian

Смежные вопросы