【发布时间】:2014-03-21 08:44:10
【问题描述】:
有人可以帮助我说明的错误是什么吗?
[NSNull dataUsingEncoding:]: unrecognized selector sent to instance
我被 iOS 应用程序的打印机插件卡住了。
一段时间以来,我一直在努力让这个应用程序正常工作......观看的代码可能有助于找到错误......
导入“APPPrinter.h”
@interface APPPrinter (Private)
- (UIPrintInteractionController*) getPrintController;
- (UIPrintInteractionController*) adjustSettingsForPrintController:(UIPrintInteractionController*)controller;
- (void) loadContent:(NSString*)content intoPrintController:(UIPrintInteractionController*)controller;
- (void) informAboutResult:(int)code callbackId:(NSString*)callbackId;
- (BOOL) isPrintServiceAvailable;
@end
@implementation APPPrinter
// Is printing available.
- (void) isServiceAvailable:(CDVInvokedUrlCommand*)command
{
CDVPluginResult* pluginResult;
pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
messageAsBool:[self isPrintServiceAvailable]];
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
- (void) print:(CDVInvokedUrlCommand*)command
{
if (![self isPrintServiceAvailable])
{
return;
}
NSArray* arguments = [command arguments];
NSString* content = [arguments objectAtIndex:0];
UIPrintInteractionController* controller = [self getPrintController];
[self adjustSettingsForPrintController:controller];
[self loadContent:content intoPrintController:controller];
[self openPrintController:controller];
[self commandDelegate];
}
- (UIPrintInteractionController*) getPrintController
{
return [UIPrintInteractionController sharedPrintController];
}
- (UIPrintInteractionController*) adjustSettingsForPrintController:(UIPrintInteractionController*)controller
{
UIPrintInfo* printInfo = [UIPrintInfo printInfo];
printInfo.outputType = UIPrintInfoOutputGeneral;
controller.printInfo = printInfo;
controller.showsPageRange = YES;
return controller;
}
- (void) loadContent:(NSString*)content intoPrintController:(UIPrintInteractionController*)controller
{
// Set the base URL to be the www directory.
NSURL *basEURL = [[NSBundle mainBundle] URLForResource:@"Login" withExtension:@"html"];
// Load page into a webview and use its formatter to print the page
UIWebView* webPage = [[UIWebView alloc] init];
[webPage loadHTMLString:content baseURL:basEURL];
UIViewPrintFormatter* formatter = [webPage viewPrintFormatter];
controller.printFormatter = formatter;
controller.showsPageRange = YES;
}
- (void) openPrintController:(UIPrintInteractionController*)controller
{
[self.commandDelegate runInBackground:^
{
[controller presentAnimated:YES completionHandler:NULL];
}];
[self performSelectorOnMainThread:@selector(openPrintController:) withObject:nil waitUntilDone:NO];
}
- (BOOL) isPrintServiceAvailable
{
Class printController = NSClassFromString(@"UIPrintInteractionController");
if (printController)
{
UIPrintInteractionController* controller = [UIPrintInteractionController sharedPrintController];
return (controller != nil) && [UIPrintInteractionController isPrintingAvailable];
}
return NO;
}
@end
任何关于创建和让打印插件在我的应用程序中运行的帮助/链接也很棒。
【问题讨论】:
-
能否提供更多代码来分析问题?
-
我已经编辑了问题并粘贴了代码......希望这可能会有所帮助