2016-08-23 3 views
0

У меня есть метод, который сохраняет данные клиента, введенные в форму, которая вызывает метод createPDFFile. У меня есть файл PDF, созданный, и в нем есть некоторые строки-заполнители, чтобы я мог выложить PDF-файл, и теперь я хочу взять stringValue из NSTextField, а затем добавить его в String, который содержит фрагмент для ex: @ «Name:» добавьте stringValue из NSTextField. Я могу получить первый элемент для работы, поскольку я изменил IBOutput, чтобы сохранить, и это сработало для первого элемента, но не второго, и так далее. Я получаю ошибку BAD_AXCESS, но только когда метод завершен.Попытка добавить строку в другую строку из NSTextField для печати в PDF-файле

Вот начало метода PDF рисования:

-(void)drawPDFCustomerInfoWithContext:(CGContextRef)currentContext andWithPageSize:(CGSize)pageSize andCustomerObject:(Customer *)currentCustomer{ 
CTFontRef font = CTFontCreateWithName(CFSTR("Arial"), 12, NULL); 
CFRange currentRange = CFRangeMake(0, 0); 
CGContextSetTextMatrix(currentContext, CGAffineTransformIdentity); 

NSString *customerName = [[[@"Name: " stringByAppendingString:self.firstNameTextField.stringValue] stringByAppendingString:@" "] stringByAppendingString:self.lastNameTextField.stringValue]; 
NSString *customerAddress = @"Address: "; 
NSString *customerCity = @"City: "; 
NSString *customerState = @"State: "; 
NSString *customerZipcode = @"Zipcode: "; 
NSString *customerPhone = @"Phone: "; 
NSString *customerEmail = @"Email: "; 

CFStringRef customerNameStringRef = (__bridge CFStringRef)customerName; 
CFStringRef customerAddressStringRef = (__bridge CFStringRef)customerAddress; 
CFStringRef customerCityStringRef = (__bridge CFStringRef)customerCity; 
CFStringRef customerStateStringRef = (__bridge CFStringRef)customerState; 
CFStringRef customerZipCodeStringRef = (__bridge CFStringRef)customerZipcode; 
CFStringRef customerPhoneStringRef = (__bridge CFStringRef)customerPhone; 
CFStringRef customerEmailStringRef = (__bridge CFStringRef)customerEmail; 

Вот метод сохранения:

- (IBAction)sendEstimateToCustomer:(id)sender { 
float tempFloat = [[self.estimateNumberLabel stringValue]floatValue]; 
self.customerDataArray = [[NSMutableArray alloc]initWithArray:[self createCustomerDataArrayWithFirstName:self.firstNameTextField.stringValue andLastName:self.lastNameTextField.stringValue andAddress:self.customerAddress.stringValue andCity:self.customerCity.stringValue andState:self.customersState.stringValue andZipCode:self.customerZipcode.stringValue andPhone:self.customerPhone.stringValue andEmail:self.customerEmail.stringValue andEstimateNumber:tempFloat]]; 

self.customer = [[Customer alloc]initWithCustomerDataArray:self.customerDataArray]; 




[self createEstimatePDF]; 

Вот метод createEstimatePDF

-(void)createEstimatePDF{ 
NSLog(@"create Estimate Method Fired"); 


CGContextRef pdfContext; 
CFURLRef url; 
url = [self createPDFPath]; 

CFMutableDictionaryRef myDictionary = NULL; 
myDictionary = CFDictionaryCreateMutable(NULL, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); 
CFDictionarySetValue(myDictionary, kCGPDFContextTitle, CFSTR("My PDF File")); 
CFDictionarySetValue(myDictionary, kCGPDFContextCreator, CFSTR("Ben")); 
pdfContext = CGPDFContextCreateWithURL(url,NULL, myDictionary); 

CFRelease(url); 

CGPDFContextBeginPage(pdfContext,myDictionary); 
CGSize pageSize = CGSizeMake(612, 792); 



[self drawPDFJobDescriptionTableWithContext:pdfContext andWithPageSize:pageSize]; 
[self drawPDFContractualTextWithContext:pdfContext andPageSize:pageSize]; 
[self drawPDFCustomerInfoWithContext:pdfContext andWithPageSize:pageSize andCustomerObject:self.customer]; 
[self drawPDFEstimateNumberWithContext:pdfContext andWithPageSize:pageSize]; 
[self drawPDFJobTableHeadersWithContext:pdfContext andPageSize:pageSize]; 
[self drawPDFBorderWithContext:pdfContext andWithPageSize:pageSize]; 
[self drawPDFHeaderWithContext:pdfContext andWithPageSize:pageSize]; 
[self drawPDFLegalStatementWith:pdfContext andPageSize:pageSize]; 
[self drawPDFSignatureAndDateWith:pdfContext andPageSize:pageSize]; 
[self drawPDFSignLinesWithContext:pdfContext andPageSize:pageSize]; 

CFRelease(myDictionary); 


CGPDFContextEndPage(pdfContext); 

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

NSString *customerName = [[[@"Name: " stringByAppendingString:self.firstNameTextField.stringValue] stringByAppendingString:@" "] stringByAppendingString:self.lastNameTextField.stringValue]; 

Ive пытался скопировать значения более, а также для передачи данных с помощью методов, а также с объектом клиента передается.

Если требуется дополнительная информация, я могу предоставить. Все NSTextfields являются сохранить

ответ

0

Вопрос был в конце функции я выпускаем CFStringRef, который вызывает значение, которое будет потеряно прежде, чем это было обращено на мой взгляд, я удалил

CFRelease(customerNameStringRef); 

и то, похоже, все они работают.

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