Вы когда-нибудь задумывались над этапами?
- Создать запрос на выборку (возможно
с предикатом, если вы хотите
фильтровать результаты).
- Выполнить запрос на выборку. Если успешно ...
- Для каждого экземпляра в массиве возвращаемых результатов ...
- Создайте путь, используя атрибут "name".
- Запишите строку «message» в путь, который вы только что создали.
- Следующий экземпляр ...
После того, как вы определили шаги, совсем не сложно найти соответствующие части документации , чтобы выяснить, как выполнять каждый шаг.
Вы могли бы фактически выполнить это в трех строках кода, если вы включили некоторые вещи и уже убедились, что целевая папка доступна для записи и не заботится о перезаписи.
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];
}