2014-12-19 2 views
-3

Я отсортировали основных данных атрибутов в массив на основе Entity Материал и один это атрибуты категории и хотите, чтобы отобразить сохраненные ответы в NSLog.Форматирование массив NSString и отображение в NSLog

Это код, который я использовал, чтобы получить мои желаемые ответы:

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Materials"]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Materials" inManagedObjectContext:self.managedObjectContext]; 

// Required! Unless you set the resultType to NSDictionaryResultType, distinct can't work. 
// All objects in the backing store are implicitly distinct, but two dictionaries can be duplicates. 
// Since you only want distinct Categories, only ask for the 'Category' property. 
fetchRequest.resultType = NSDictionaryResultType; 
fetchRequest.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"Category"]]; 
fetchRequest.returnsDistinctResults = YES; 
NSArray * arrayWithCatNames = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; 

NSLog (@"Categories: %@",arrayWithCatNames); 

Без использования NSString форматирования кода я получаю это

2014-12-19 11:28:48.648 App2.0[31085:2652989] Category Names: (
    { 
    category = "Bakelite"; 
}, 
    { 
    category = "BOXES, BRACKETS AND BLOCKS"; 
}, 
    { 
    category = MISCELLANEOUS; 
}, 
) 

мне нужно отобразить в индивидуальном порядке без запятыми и без скобок. Поскольку он сортирует и сохраняет по-другому, чем большинство массивов, он отображается неправильно. Я использовал 'NSString * name = [NSString stringWithFormat: ...];' среди некоторых других вариантов попробовать и отсортировать лучше, что я сделал, но это не решило проблему.

У некоторых также есть цитаты и другие, которые я не сохранил таким образом. Кто-нибудь знает, почему это происходит? Благодарю. Это ответили на комментарии - использование запятых или других символов (даже иногда пробелов) вызывает кавычки.

Это мой вопрос от вчера о получении конкретного атрибута из основных данных: Displaying Core Data: If attribute has same name display once

Мой вопрос, как я показываю в NSLog каждой категории, как «Категория:% @, arrayWithCatNames»?

UPDATE

я обнаружил ответ на мой вопрос и отвечал ниже.

+0

Комментарии для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/67335/discussion-on-question-by-sasmith-formatting-array-of-nsstring-and-display-in-ns) , – Taryn

ответ

0

Я нашел ответ с небольшой помощью от HotLicks, указав меня в правильном направлении.

** Я изменил имя массива, чтобы помочь с заблуждением:

// No longer "dictionaries" 
NSArray * arrayOfStrings = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; 
id value = [arrayOfStrings valueForKey:@"category"]; 
for (NSString * str in value) { 

    NSLog (@"Category Names: %@",str); 

} 

Я добавил его в конце моего кода и удалил NSString * name код. Сейчас работает отлично.

0
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Materials"]; 
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Materials" inManagedObjectContext:self.managedObjectContext]; 

// Required! Unless you set the resultType to NSDictionaryResultType, distinct can't work. 
// All objects in the backing store are implicitly distinct, but two dictionaries can be duplicates. 
// Since you only want distinct Categories, only ask for the 'Category' property. 
fetchRequest.resultType = NSDictionaryResultType; 
fetchRequest.propertiesToFetch = [NSArray arrayWithObject:[[entity propertiesByName] objectForKey:@"Category"]]; 
fetchRequest.returnsDistinctResults = YES; 
NSArray *arrayOfResults = [self.managedObjectContext executeFetchRequest:fetchRequest error:nil]; 
//Convert to String to print better, still not working 
NSArray * categories = [arrayOfResults valueForKey:@"category"]; 

Здесь вы получите множество категорий, и вы можете использовать его в качестве источника данных в методах UITableView, а также вы можете получить отсортированные категории из основных данных во время выборки. Дайте мне знать, если вы хотите, чтобы я сделал это за вас.

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