2010-04-02 2 views
1

У меня есть сущность в основных данных, которая имеет 2 атрибута. Это строка, называемая «имя», а другая строка, называемая «сообщение». Мне нужен метод для создания текстовых файлов для всех атрибутов, которые пользователь добавил. Я не назвал имена файлов атрибутом имени, а содержимое - атрибутом сообщения. Если кто-нибудь знает, как это сделать, любая помощь будет отличной.Экспортировать ядро ​​Data Entity в виде текстовых файлов в Cocoa

Спасибо за любую помощь

ответ

8

Вы дали любую мысль на всех ступенях, участвующих?

  1. Создать запрос выборки (возможно с предикатом, если вы хотите фильтровать результаты).
  2. Выполнение запроса на выборку. Если успешно ...
  3. Для каждого экземпляра в массиве возвращаемых результатов ...
  4. Создайте путь, используя атрибут «name».
  5. Напишите строку «сообщение» только что созданному пути.
  6. Следующий экземпляр ...

После того, как вы определили шаги, это не сложно, чтобы искать соответствующие части the documentation, чтобы выяснить, как сделать каждый шаг.

Фактически вы можете выполнить это в трех строках кода, если вы встраиваете некоторые вещи и уже проверили, что целевая папка доступна для записи и не заботится о перезаписи.

Update

Хорошо, так что это занимает минимум четыре строки, так как вы не можете инициализировать запрос выборки с описанием объекта, если вы игнорировать ошибки выборки. Так как вы просили код:

NSFetchRequest *fr = [[[NSFetchRequest alloc] init] autorelease]; 
[fr setEntity:[NSEntityDescription entityForName:@"EntityName" 
          inManagedObjectContext:[self managedObjectContext]]] 
     error:nil]; 
NSArray *results = [[self managedObjectContext] executeFetchRequest:fr error:nil]; 
for (id result in results){ 
    [[result valueForKey:@"message"] writeToFile:[basePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.txt", [result valueForKey:@"name"]]] 
       atomically:NO] 
}; 

Конечно, это не очень читаемый (то есть, это некрасиво) и делает все виды предположений, но вы получите точку. Вот более полный (и иллюстративно подробный) способ:

// Create the fetch request 
NSFetchRequest * fr = [[[NSFetchRequest alloc] init] autorelease]; 
[fr setEntity:[NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:[self managedObjectContext]]]; 

// Execute the fetch request 
NSError * error = nil; 
NSArray * results = [[self managedObjectContext] executeFetchRequest:fr error:&error]; 
if (results) 
{ 
    // Process the results 
    NSString * name; 
    NSString * message; 
    NSString * path; 
    for (id result in results) 
    { 
     // Figure out this result's info 
     name = [result valueForKey:@"name"]; 
     message = [result valueForKey:@"message"]; 
     path = [basePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.txt", name]]; 

     // Write the message to the predetermined path 
     [message writeToFile:path atomically:NO]; 
    } 
} else { 
    // Error fetching results, so present error to user 
    [NSApp presentError:error]; 
} 
+0

Спасибо за ответ, вы могли бы разместить 3 строки кода? – nosedive25

+0

Я сделал это, но в будущем вам будет интересно, по крайней мере, * попробовать * посмотреть вещи в документации. Улучшение ваших исследовательских навыков сделает вас лучшим разработчиком. –

+0

Спасибо, что разместили код! – nosedive25

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