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