Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在OS X上加载由codesign工具生成的字典属性列表_Objective C_Xcode_Macos_Plist_Nsdictionary - Fatal编程技术网

Objective c 在OS X上加载由codesign工具生成的字典属性列表

Objective c 在OS X上加载由codesign工具生成的字典属性列表,objective-c,xcode,macos,plist,nsdictionary,Objective C,Xcode,Macos,Plist,Nsdictionary,我正在做一个简单的项目,但我遇到了一个看似简单的任务。将以词典为根的plist加载到nsc目录中。这是我以前做过很多次的事情,所以我有点困惑,为什么我现在被卡住了 我试图读入我在OSX上用codesign工具创建的plist。调用我正在使用的工具会将应用程序权限转储到一个文件中。对于Safari,它将执行以下操作: codesign --display --entitlements :<path to plist> /Applications/Safari.app 但结果是,它拒绝

我正在做一个简单的项目,但我遇到了一个看似简单的任务。将以词典为根的plist加载到nsc目录中。这是我以前做过很多次的事情,所以我有点困惑,为什么我现在被卡住了

我试图读入我在OSX上用codesign工具创建的plist。调用我正在使用的工具会将应用程序权限转储到一个文件中。对于Safari,它将执行以下操作:

codesign --display --entitlements :<path to plist> /Applications/Safari.app
但结果是,它拒绝加载任何内容,而我得到的内容为零:

Printing description of entitlementDict:
<nil>
(lldb)
从终端:

FatMan:~ macshome$ file /var/folders/yk/kvvzp89x03v896rqx4mc9rqw0000gq/T/FFF82FDD-0A01-4139-9719-00B447B2F907-60198-000284518B41D04F/BC54EEC8-5A0B-49FD-9BFD-44B7FFB29B73.plist
/var/folders/yk/kvvzp89x03v896rqx4mc9rqw0000gq/T/FFF82FDD-0A01-4139-9719-00B447B2F907-60198-000284518B41D04F/BC54EEC8-5A0B-49FD-9BFD-44B7FFB29B73.plist: XML  document text
以及:

我可以发布生成我的临时路径的代码,但我认为这并不重要。也许我会尝试用更短的路径进行测试,但我认为这也不重要。这是一种非常典型的生成临时文件的方法

最终更新: 我发现我做错了什么,尽管我希望这是一个更有趣的答案

我使用NSTask调用代码设计工具,但是在我的基本测试中,我忘记了在尝试将plist加载到我的NSDictionary之前等待它完成。如果我只是使用终止处理程序或waitUntilExit或终止通知,那么一切都会按预期工作


非常感谢那些试图帮助我们的人

与您遇到的问题相同,我认为这是因为您没有正确获取文件的路径。当我更改测试以执行以下操作时,它成功了

   NSDictionary *entitlementDict = [NSDictionary dictionaryWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"DictionaryTest.plist"]];
从文档中:

+ (id) dictionaryWithContentsOfFile:(NSString *)path
参数

路径

完整或相对路径名。由路径标识的文件必须包含 根对象为的属性列表的字符串表示形式 字典

返回值

在路径处包含词典的新词典,如果存在,则为nil 是文件错误或文件内容无效 字典的表示法


我发现我做错了什么,尽管我希望这是一个更有趣的答案

我使用NSTask调用代码设计工具,但是在我的基本测试中,我忘记了在尝试将plist加载到我的NSDictionary之前等待它完成。如果我只是使用终止处理程序或waitUntilExit或终止通知,那么一切都会按预期工作


非常感谢那些试图帮助我们的人

他用了“tempFile”,你怎么知道它不是完整路径?因为我遇到了完全相同的问题,直到我换成了答案中的问题逐字复制了他的xml。我验证了我可以从您的文件生成
NSDictionary
。试着排除可能性,当然试着走一条更短的路。等我回来后再试试。也许你可以像我一样尝试用代码设计工具生成文件?我想知道它是否与生成的文件有关。
FatMan:~ macshome$ file /var/folders/yk/kvvzp89x03v896rqx4mc9rqw0000gq/T/FFF82FDD-0A01-4139-9719-00B447B2F907-60198-000284518B41D04F/BC54EEC8-5A0B-49FD-9BFD-44B7FFB29B73.plist
/var/folders/yk/kvvzp89x03v896rqx4mc9rqw0000gq/T/FFF82FDD-0A01-4139-9719-00B447B2F907-60198-000284518B41D04F/BC54EEC8-5A0B-49FD-9BFD-44B7FFB29B73.plist: XML  document text
FatMan:~ macshome$ ls -l /var/folders/yk/kvvzp89x03v896rqx4mc9rqw0000gq/T/FFF82FDD-0A01-4139-9719-00B447B2F907-60198-000284518B41D04F/BC54EEC8-5A0B-49FD-9BFD-44B7FFB29B73.plist
-rw-r--r--  1 macshome  staff  455 Jan 12 15:13 /var/folders/yk/kvvzp89x03v896rqx4mc9rqw0000gq/T/FFF82FDD-0A01-4139-9719-00B447B2F907-60198-000284518B41D04F/BC54EEC8-5A0B-49FD-9BFD-44B7FFB29B73.plist
   NSDictionary *entitlementDict = [NSDictionary dictionaryWithContentsOfFile:[[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"DictionaryTest.plist"]];
+ (id) dictionaryWithContentsOfFile:(NSString *)path