返回OSStatus代码1282的PMServerCreatePrinterList(kPMServerLocal,& printerList)

时间:2017-12-14 18:16:15

标签: objective-c macos cocoa

下面是我使用命令行工具的代码,但是当我创建一个Cocoa应用程序并且我使用的是下面的代码时,没有从Mac OS X获取所有打印机队列。

CFArrayRef printerList;   

if (noErr == PMServerCreatePrinterList(kPMServerLocal, &printerList) && (nil != printerList))
    {
        CFIndex count = CFArrayGetCount(printerList);
        NSLog(@"Count = %ld",count);
        for (int index = 0; index < count; index++) {
            PMPrinter myPrinter = (PMPrinter)CFArrayGetValueAtIndex(printerList, index);
            NSString *name = (__bridge NSString *)(PMPrinterGetName(myPrinter));
            NSLog(@"%@",name);
        }
    }

如果有人遇到此问题,请提供帮助。

1 个答案:

答案 0 :(得分:0)

这是一个沙盒问题。如果您的应用程序没有在沙盒中运行,那么它可以正常工作,否则您需要获得允许它的权利。

  

(Domain:org.cups.PrintingPrefs,User:kCFPreferencesCurrentUser,ByHost:No,Container:(null)):访问应用程序容器外的首选项需要用户首选项读取或文件读取数据沙箱访问,从cfprefsd分离

在Xcode的目标功能视图中,启用&#34;打印&#34; App Sandbox下的功能 - &gt;硬件