Using NSPredicate with NSFetchRequest in a NSFetchedResultsController
The entity and the sort descriptors of NSFetchRequest are defined as "properties"

@property(nonatomic, strong) NSEntityDescription *entity;
@property(nonatomic, strong) NSArray *sortDescriptors;


So while calling the setter methods still works

[fetchRequest setEntity:...];
[fetchRequest setSortDescriptors:...];


you should use the "dot-Syntax" for properties:

fetchRequest.entity = ...;
fetchRequest.sortDescriptors = ...;


and the same applies to the properties of NSFetchedResultsController.

The creation of the fetch request can be simplified with the
factory method

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"KFPSubItem"];


I usually assign the sort descriptors to separate variables first. This may
be a matter of taste, but it avoids too long statements if there is more
than one sort descriptor:

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
fetchRequest.sortDescriptors = @[sortByName];


The 

self.fetchedResultsController = [[NSFetchedResultsController alloc] ...


line is extremely long and should be split into several lines.

The correct way to check for success or failure of Cocoa (Touch) methods is 
documented in
"Handling Error Objects Returned From Methods" in the "Error Handling Programming Guide":


  Important: Success or failure is indicated by the return value of the
  method. Although Cocoa methods that indirectly return error objects in
  the Cocoa error domain are guaranteed to return such objects if the
  method indicates failure by directly returning nil or NO, you should
  always check that the return value is nil or NO before attempting to
  do anything with the NSError object.


So instead of 

NSError *error = nil;
[self.fetchedResultsController performFetch:&amp;error];
if (error) { ... }


you should do

NSError *error = nil;
if (![self.fetchedResultsController performFetch:&amp;error]) { .... }


Putting it all together:

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"KFPSubItem"];

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
fetchRequest.sortDescriptors = @[sortByName];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"item = %@", self.record];
fetchRequest.predicate = predicate;

self.fetchedResultsController = [[NSFetchedResultsController alloc]
                                initWithFetchRequest:fetchRequest
                                managedObjectContext:self.managedObjectContext
                                  sectionNameKeyPath:nil
                                           cacheName:nil];
self.fetchedResultsController.delegate = self;

NSError *error = nil;
if (![self.fetchedResultsController performFetch:&amp;error]) {
    NSLog(@"Unable to perform fetch");
    NSLog(@"%@, %@", error, error.localizedDescription);
}