天道酬勤,学无止境

如何从 plist 中获取属性(How to get a property from a plist)

问题

我是 Lisp 的新手。 我想使用这样的字符串变量从属性列表中访问特定属性

(setf sym (list :p1 1))
(setf x "p1")
(getf sym :x)
回答1

关于 cl:getf

让 Petit Prince 的回答是对的,getf 可能是您想在这里使用的函数,但请注意,它不仅可以用于关键字符号。 您可以将它用于任何对象。 属性列表只是交替指标和值的列表,任何对象都可以是指标:

(let ((plist (list 'a 'b 'c 'd)))
  (getf plist 'c))
;=> D

您甚至可以使用字符串作为指标:

(let* ((name "p1")
       (plist (list name 1)))
  (getf plist name))
;=> 1

但是,这可能不是很好的做法,因为getf将指标与eq进行比较。 这意味着使用字符串作为指标可能不可靠,具体取决于您的用例:

(let ((plist (list "p1" 1)))
  (getf plist "p1"))
;=> NIL

对于你的例子

在您的情况下,您试图获取一个字符串并找到名称与字符串相等的符号的对象(即,具有相同的字符,但不考虑大小写)。 循环遍历列表并将指标与string-equal进行比较可能更有意义。

(let ((plist '(:p1 1 :p2 2)))
  (loop 
     for (indicator value) on plist by #'cddr
     when (string-equal indicator "p1")
     return value))
;=> 1

当然,您可以将其封装在抽象函数中:

(defun getf-string-equal (plist indicator)
  (loop
     for (i v) on plist by #'cddr
     when (string-equal i indicator)
     return v))

(getf-string-equal '(:p1 1 :p2 2) "p1")
;=> 1
回答2

getf的第二个参数是一个关键字,你有字符串。 关键字是位于包 KEYWORD 中的符号,通常被读者大写:

? (setf sym (list :p1 1))
(:P1 1)
? sym
(:P1 1)

所以你需要使用:

? (getf sym (find-symbol (string-upcase x) "KEYWORD"))
1

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Apple 如何让 info.plist 显示其“信息属性列表”?(How does Apple make the info.plist display its “Information Property List”?)
    问题 我的 plist 只是以“Root”开头。 他们的包含一系列有用的东西,您可以选择来调整配置。 我正在查看的特定 info.plist 位于 iphone 项目中。 我对此进行了一些研究(不是很多),但甚至没有检测到溶液的气味。 什么机制把这些放在一起? 我可以随心所欲吗? 澄清一下,我指的不是简单地编辑 plist,而是使用属性列表编辑器来定义左列中的下拉列表,就像 Apple 的 info.list 行为一样。 通常我的 plist 会在编辑器中显示 3 列。 键、类型和值。 Info.plist 有 2 个,它是如何设置的,因此它在属性列表编辑器中的行为有所不同? 苹果的这个链接定义了 Info.plist 中使用的键。 属性列表键参考 回答1 您在属性列表编辑器的下拉菜单中看到的名称由 Apple 所谓的“属性列表结构定义”提供。 这是一个基于 XML 的文件,它为特定类型的属性列表定义特定的键和值。 属性列表编辑器使用它来将人类可读的名称与特定的属性列表键以及合理的默认值、类型信息等相关联。 使用定义时,属性列表编辑器会隐藏“类型”列,因为它会自动从结构定义中获取类型信息。 如果您愿意,您仍然可以使用“编辑”>“值类型”来手动更改类型。 您还可以通过视图 > 属性列表类型手动更改属性列表编辑器正在使用的定义。 Xcode 包含 Info.plist 文件的内置定义
  • 如何在 XMLSlurper 语句中使用变量引用(How to I use a variable reference within XMLSlurper statement)
    问题 我正在使用带有 XMLSlurper 的 groovy 来验证我在 soap ui pro 中的 Web 服务响应。 我有以下有效的代码(expectedResponse 是存储预期错误代码的 var,例如 E0023)... if(expectedResponse2 in slurper.Body.createShipmentResponse.integrationFooter.errors.error.errorCode.collect{it.text()}) { result = "pass" } 但我想用对我可以从 SoapUI Pro 数据源提供的变量的引用替换 'integrationFooter.errors.error.errorCode',因为我并不总是在同一个响应元素上进行验证。 即,如果我希望测试通过,我可能想检查状态元素是否填充了“已分配”。 如果我希望请求失败,我想验证 errorCode 字段是否填充了正确的 errorCode,例如“E0023”。 如果我的 groovyscript 中有一个名为 testElement 的变量,并且我为它分配了元素的路径,例如 integrationFooter.errors.error.errorCode 我如何在我的 XMLSlurper 语句中引用该变量? 我尝试了下面的代码,但没有用。 if
  • 如何在 iOS 中的 info.plist 中添加属性(How to add properties in info.plist in iOS)
    问题 我想在我自己的应用程序中通过电子邮件打开 PDF 附件:我在这里参考了两个链接: 如何将文件类型与 iPhone 应用程序相关联? 在 Raywenderlich 上 它显示了一些 XML 内容,并说它添加到 info.plist.My info.plist 显示为这个附件。 如何将内容添加到 info.plist 以使其作为 XML 文档可见。 我的信息.plist: 回答1 plist 文件只不过是 Xcode 以他自己的方式查看的 XML 文档。 您可以右键单击 -> 打开为 -> 源代码以获取所需的视图。 您也可以通过单击加号或右键单击 -> 添加行来直接添加到 plist。 plist 的默认视图可以给你一个建议,所以我建议你使用它而不是查看为 XML 回答2 info.plist 是 iPhone 应用程序中的系统级 plist,您可以通过添加这样的属性来添加属性: 回答3 右键单击 Xcode 中的 .plist 并选择“Open As -> Source code” 回答4 可能值得一提的是如何到达那里.. Info.plist 是 Main.storyboard 或 viewController.swift 下面的文件之一 当您第一次单击它时,它通常是表格格式,因此请右键单击该文件并“打开为”源代码,然后添加代码 回答5 如果您想以 XML 格式查看它
  • 如何在Swift中将plist作为字典?(How do I get a plist as a Dictionary in Swift?)
    问题 我正在玩苹果的新Swift编程语言,遇到了一些问题... 当前,我正在尝试读取plist文件,在Objective-C中,我将执行以下操作以将内容作为NSDictionary获取: NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Config" ofType:@"plist"]; NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:filePath]; 如何在Swift中将plist作为字典? 我假设我可以通过以下方式获取到plist的路径: let path = NSBundle.mainBundle().pathForResource("Config", ofType: "plist") 当这可行时(如果正确的话?):如何将内容作为字典? 还有一个更笼统的问题: 是否可以使用默认的NS *类? 我想是...还是我错过了什么? 据我所知,默认框架NS *类仍然有效并且可以使用吗? 回答1 在Swift 3.0中,从Plist读取。 func readPropertyList() { var propertyListFormat = PropertyListSerialization.PropertyListFormat
  • 从用户定义的设置在 Info.plist 中设置布尔属性(Setting a boolean property in Info.plist from a User Defined Setting)
    问题 从用户定义的设置在 Info.plist 文件中设置属性很简单,您只需使用 ${YOUR_SETTING_NAME} 作为值。 但是,是否可以为 bolean 属性执行此操作? plist 文件中布尔值的结构是: <key>NSAppleScriptEnabled</key> <false/> 这里不清楚如何使用用户定义的设置。 回答1 我不确定如何执行您的要求,但我很确定对于此特定键 (NSAppleScriptEnabled),您还可以使用字符串“YES”和“NO”,它会起作用。 回答2 在标签中包含布尔值的 plist 文件不再有效。 此解决方案有效: 向目标添加新的运行脚本构建阶段。 放入这个: if [ ${CONFIGURATION} = "Release" ]; then /usr/libexec/PlistBuddy -c "Set :UIFileSharingEnabled NO" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}" fi 因此,在我的配置中,我将 plist 中的 UIFileSharingEnabled 设置为 YES 作为默认值,当我为 Release 构建时,会发生上述步骤并将其设置为 false。 回答3 “用户定义设置”是什么意思... 如果您正在谈论的用户是您(换句话说,应用程序的开发人员)
  • 确定终端/脚本中的OS X键盘布局(“输入源”)?(Determine OS X keyboard layout (“input source”) in the terminal/a script?)
    问题 我想从终端确定OS X键盘布局(或OS X称为“输入源”),以便可以在tmux状态栏之类的位置显示它。 因此,我想知道当前的布局是例如“ US”还是“ Swedish-Pro”。 谷歌搜索对我没有任何帮助。 这可能吗? 回答1 注意:@MarkSetchell因提出了基本方法而值得赞扬,该基本方法是[从哪里开始]外观以及使用哪些工具。 经过进一步调查并在评论中来回回想,我认为我已总结了解决方案(自OS X 10.9.1起): do shell script "defaults read ~/Library/Preferences/com.apple.HIToolbox.plist \\ AppleSelectedInputSources | \\ egrep -w 'KeyboardLayout Name' | sed -E 's/^.+ = \"?([^\"]+)\"?;$/\\1/'" 请注意,为了利用AppleScript的优势,如何将\为\\ ,以确保只有\到达外壳。 如果要直接从外壳执行同一命令(作为一行),它将是: defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleSelectedInputSources | egrep -w 'KeyboardLayout Name' |sed
  • 如何使用 CMake 添加额外的 plist 属性?(How to add an extra plist property using CMake?)
    问题 我正在尝试添加项目 <key>UIStatusBarHidden</key><true/> 到我的由 CMake 自动生成的 plist。 对于某些键,似乎有添加项目的预定义方法; 例如: set(MACOSX_BUNDLE_ICON_FILE ${ICON}) 但是我找不到添加任意属性的方法。 我尝试使用MACOSX_BUNDLE_INFO_PLIST目标属性如下:我希望生成的 plist 与旧的相同,除了我想要的新属性,所以我只是复制了自动生成的 plist 并将其设置为我的模板。 但是 plist 使用了一些 Xcode 变量,它们也看起来像${foo} ,CMake 对此表示不满: 解析字符串时cmake代码中的语法错误 <string>com.bedaire.${PRODUCT_NAME:identifier}</string> 语法错误,意外的 cal_SYMBOL,期待 } (47) 策略 CMP0010 未设置:错误的变量引用语法是一个错误。 运行“cmake --help-policy CMP0010”以获取策略详细信息。 使用 cmake_policy 命令设置策略并取消此警告。 此警告适用于项目开发人员。 使用 -Wno-dev 来抑制它。 无论如何,我什至不确定这是正确的做法。 我找不到一个很好的例子或任何关于这个的好的文档。 理想情况下,我只是让
  • 如何在 iOS 中从 .plist 添加和获取值(How to add and get the values from .plist in iOS)
    问题 我正在实现一个基于 Web 服务的应用程序。 因为我需要在 .plist 中添加一个字符串作为属性,并且我需要在代码中需要时从 .plist 中获取值。 回答1 这是一个代码示例: NSString *path = [[NSBundle mainBundle] pathForResource: @"YourPLIST" ofType: @"plist"]; NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile: path]; id obj = [dict objectForKey: @"YourKey"]; 回答2 NSBundle* mainBundle = [NSBundle mainBundle]; // Reads the value of the custom key I added to the Info.plist NSString *value = [mainBundle objectForInfoDictionaryKey:@"key"]; //Log the value NSLog(@"Value = %@", value); // Get the value for the "Bundle version" from the Info.plist [mainBundle
  • 如何序列化包含NSNull的NSDictionary / NSArray / Property List(plist)(How to serialize a NSDictionary/NSArray/Property List (plist) which contains NSNull)
    问题 我想使用NSNull在NSMutableDictionary存储一些空值,然后使用属性列表序列化此数据。 问题是不允许NSNull并且出现“属性列表格式无效”错误。 有没有解决方法? 似乎非常令人惊讶,他们没有将NSNull放在有效的plist对象列表中。 回答1 我在序列化之前将NSArray或NSDictionary转换为NSData。 以下是nsarray上用于序列化和反序列化的类别。 这舒服地处理了一些数据为nsnull @implementation NSArray(Plist) -(BOOL)writeToPlistFile:(NSString*)filename{ NSData * data = [NSKeyedArchiver archivedDataWithRootObject:self]; NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString * documentsDirectory = [paths objectAtIndex:0]; NSString * path = [documentsDirectory stringByAppendingPathComponent:filename]
  • 如何从Mac硬盘获取序列号?(How to get serial number from Mac hard disks?)
    问题 有没有一种简单的方法可以使用API​​获取Mac中所有硬盘的序列号? 基本上,我正在寻找硬盘的唯一标识符,通过它可以确定该硬盘是否已被我的应用程序使用(或引用)。 如果还有其他解决方法,请告诉我。 注意:对于10.4及更高版本,我需要此解决方案。 回答1 我不确定“ AppleUSBEHCI”是否适合查找,但是您可以使用IOKit框架检索此类数据: #include <IOKit/IOKitLib.h> #include <Cocoa/Cocoa.h> kern_return_t kr; io_iterator_t io_objects; io_service_t io_service; kr = IOServiceGetMatchingServices(kIOMasterPortDefault, IOServiceNameMatching("AppleUSBEHCI"), &io_objects); if(kr != KERN_SUCCESS) exit(1); while((io_service= IOIteratorNext(io_objects))) { kr = IORegistryEntryCreateCFProperties(io_service, &service_properties, kCFAllocatorDefault, kNilOptions)
  • Android Studio无法找到有效的Jvm(与MAC OS相关)(Android Studio was unable to find a valid Jvm (Related to MAC OS))
    问题 我无法在Mac OS(10.10.1-优胜美地)上启动用于Android开发的Android Studio。 回答1 在finder中打开Android Studio的应用程序包,然后编辑Info.plist文件。 更改密钥JVMversion。 输入1.6+,而不是1.6 *。 那对我有用! 干杯! 编辑: 尽管在旧版本的Android Studio中这是必需的,但不再建议这样做。 见官方声明 “请注意:请勿编辑Info.plist以选择其他版本。这不仅会破坏应用程序签名,还会破坏您安装的将来补丁更新。” 安东尼奥·何塞(Antonio Jose)的答案是正确的。 谢谢aried3r! 回答2 只是在这里安装这个家伙 http://support.apple.com/kb/DL1572?viewlocale=zh_CN&locale=zh_CN 你应该很好 回答3 [更新] 这已在Android Studio 1.1中修复:https://issuetracker.google.com/issues/37015035 在下一个版本的Android Studio中,如果未找到Java 6但找到7(或更高版本),它将使用Java 6。 由于改进了字体渲染,我们仍然建议使用Java 6运行Studio,但是例如,如果仅找到Java 8,则无需采取任何措施。 [结束更新]
  • 关于如何从 plist 获取数据以及它应该如何布局的问题(A question on how to Get data from plist & how should it be layout)
    问题 这是我关于在 plist 上检索数据的第一个查询的后续问题。 现在我已经设法通过随机图像调用来检测用户对我的视图所做的触摸(感谢 phytonquick)。 CGPoint currentTouchLocation = [currentTouch locationInView:self]; 我现在在如何将我从用户在视图中的随机图像上进行的触摸获得的值与保存在 plist 数据中的值进行比较时遇到了麻烦,该值与用户触摸的随机图像同名。 我知道如何计算触摸距离,这样我就可以调整击球点。 -(CGFloat) distanceBetween: (CGPoint) point1 and: (CGPoint)point2 NSMutableDictionary *????? = [self loadDictionaryFromPList: @"?????"]; NSNumber *1stXCoordinate = [????? objectForKey:@"1stXCoordinate"]; NSNumber *1stYCoordinate = [????? objectForKey:@"1stYCoordinate"]; if (1stXCoordinate && 1stYCoordinate) { CGPoint 1stTouchLocation = CGPointMake(
  • 如何使用PlistBuddy访问由其属性指定的Preferences元素?(How can I use PlistBuddy to access an element of PreferencesSpecified by its property?)
    问题 目前,我正在使用此代码 /usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" "Test/Settings.bundle/Root.plist" 在构建阶段的脚本部分中,将产品版本放在应用程序设置的只读字段中。 该字段在首选项数组中的位置为1(从0开始)。 我问是否可以使用比1更强大的功能来访问该字段,因为在开发过程中我或其他开发人员可能会意外更改位置。 不论其位置如何,我都可以访问该元素以指定其标识符吗? 为了更好地解释我的需求,我写下了一个例子。 我需要将类似1.2.345放入array第二个dict的string节点中,即我需要从0.0.0更改为1.2.345 。 是否可以访问dict节点而不声明它是数组中的第二个节点? 我要的东西类似于在PlistBuddy中使用的xpath表达式(如果存在)。 <?xml version="1.0" encoding="UTF-8"?> <dict> <key>PreferenceSpecifiers</key> <array> <dict> <key>Title</key> <string>Application info</string> <key>Type</key> <string
  • 如何使用目标 c 在 osx 中收集系统信息(how to collect system info in osx using objective c)
    问题 是否定义了任何方法/API 来收集 osx.ini 中的系统信息? 我想编写实用程序来收集硬件信息,如 CPU、RAM、网络适配器。 任何想法 ? 提前致谢。 回答1 最简单的方法是使用 system_profiler 命令的输出。 它还有一个-xml选项,使输出易于自动解析。 回答2 System Profiler 很好,它会为一些慢速文件 I/O 输出一个 XML,并且在获取所需信息之前让我们依赖另一个进程来完成。 好吧,如果我这样说,System Profiler 真的是这个问题的最佳选择和答案吗? 我认为不是(海事组织)。 这是我如何做到的。 标头是私有读写属性的只读属性。 类别方法非常简单,但如果有人有问题,请发帖,我会回答。 #import <IOKit/IOKitLib.h> #import <sys/sysctl.h> @interface VarSystemInfo () @property (readwrite, strong, nonatomic) NSString *sysName; @property (readwrite, strong, nonatomic) NSString *sysUserName; @property (readwrite, strong, nonatomic) NSString *sysFullUserName;
  • 权利无效(Entitlements are not valid)
    问题 最近,我将我的iPhone SDK操作系统从2.2.1版升级到了3.0版。 之后,在构建我的应用程序时,我得到一个错误,即配置文件已过期。 因此,我创建了一个新的配置文件。 然后,我使用配置文件分发了我的应用程序。 但是在将我的应用程序同步到iPhone设备时,iTunes中出现错误。 错误消息是“由于权利无效,因此未在iPhone上安装应用程序'iGVA'。” 我检查了签名权利的代码是否包含正确的权利plist文件。 如何解决呢? 回答1 迈克尔在上面的答案是正确的(或他指向的链接是)。 这是我必须采取的步骤才能使其正常工作: 拥有检查其设备UDID的临时证书。 通过将该证书拖到XCode图标上来安装它。 在项目上,创建分发配置,然后将构建参数设置为适当的设备。 分配。 现在,我们针对Device 3.0进行构建| 分配。 我的项目没有包含Entitlements.plist文件-我必须通过从菜单中选择“文件” |“添加”来添加它。 添加文件| iPhone操作系统| 权利,然后调用新文件Entitlements.plist 新的plist文件只有一行-将该行的值设置为未选中。 在项目构建配置中,在“代码签名权利”行中,输入Entitlements.plist文件名作为值。 在“代码签名身份”中,选择临时证书身份(尽管我发现您也可以使用分发证书身份) 现在建立:)
  • 如何使用 Swift 3 iOS 应用程序从 plist 中读取(How to read from a plist with Swift 3 iOS app)
    问题 -免责声明- 我对 iOS 和 Swift 开发非常陌生,但我对编程并不是特别陌生。 我有一个包含Swift3元素的基本iOS应用程序。 我创建了一个plist文件,其中包含一些我想在我的应用程序中读取和显示的条目。 (不需要写访问权限) 如何在 Swift3 中读取捆绑plist文件的给定键的值? 这对我来说似乎是一个非常简单的问题,但是一堆搜索让我质疑我的整个概念方法。 有用的提示将不胜感激。 回答1 与您在 Swift 2.3 或更低版本中所做的相同,只是更改了语法。 if let path = Bundle.main.path(forResource: "fileName", ofType: "plist") { //If your plist contain root as Array if let array = NSArray(contentsOfFile: path) as? [[String: Any]] { } ////If your plist contain root as Dictionary if let dic = NSDictionary(contentsOfFile: path) as? [String: Any] { } } 注意:在 Swift 中最好使用 Swift 的泛型类型 Array 和 Dictionary
  • 是否可以创建特定于设备的 .plist 文件 -iOS(Is it possible to create a device specific .plist file -iOS)
    问题 我将一些数据存储在 plist 文件中。我意识到它可以共享。 有没有办法让 .plist 文件特定于设备? 也许UDID或什么? 任何想法将不胜感激.. 回答1 如果您不想让其他人看到您的 .plist 文件的内容,您可以使用 iOS 提供的加密算法对其进行加密。 其他简单的方法是将您的敏感数据存储在钥匙串或NSUserDefaults而不写入文件,这将是非常特定于设备的。 祝你好运! 回答2 UDID 从 2013 年 5 月 1 日起被禁止。 从 iOS 6 开始,有一个额外的方法叫做identifierForVendor 。 您可以使用此方法在每个 iOS 设备中为您的应用程序创建唯一标识符。 你可以得到它: NSString *idForApp = [[UIDevice currentDevice] identifierForVendor]; 使用idForApp保存您的plist 。 它将是独一无二的。 供应商标识符一个字母数字字符串,用于向应用程序供应商唯一标识设备。 (只读) @property(nonatomic, readonly, retain) NSUUID *identifierForVendor; 讨论对于来自在同一设备上运行的同一供应商的应用程序,此属性的值是相同的。 对于来自不同供应商的同一设备上的应用程序以及不同供应商的不同设备上的应用程序
  • ios设置包中的简单标题输出(Simple title output in ios settings bundle)
    问题 我只想在设置文件中输出我的 ios 应用程序的版本号。 我知道我必须将设置文件添加到应用程序文件夹中。 当我构建和运行时,我可以看到标准设置包附带的 4 个设置。 为了获得一个简单的只读字符串,我将第二个值更改为以下值 在代码 (didFinishLaunchingWithOptions:) 中,我调用以下代码: NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; [[NSUserDefaults standardUserDefaults] setValue:version forKey:@"version_number"]; [[NSUserDefaults standardUserDefaults] synchronize]; 令我惊讶的是,什么都没有发生。 我只看到 Group 元素和工具开关和滑块,但没有标题行。 有人知道我缺少什么吗? 非常感谢你! 回答1 好的,我也遇到了这个问题。 解决方案(有点)是提供一个默认值字段并给它一个值。 这实际上在文档中明确说明 - 默认值是 Title 属性的必填字段,因此如果您不指定它,则标题将不会显示在设置窗格中。 不幸的是,一旦它被设置,我似乎无法改变它的值,也可能是设计的—
  • iPhone应用程序:如何从root.plist获取默认值?(iPhone App : How to get default value from root.plist?)
    问题 我正在使用iPhone应用程序 我从root.plist读取这样的密钥: NSString *Key1Var = [[NSUserDefaults standardUserDefaults] stringForKey:@"Key1"]; (“ Key1”是PSMultiValueSpecifier ,已经在root.plist中设置了默认字符串值) 用户进行设置后,效果很好。 但是,如果用户在进行任何设置之前运行该应用程序,则“ Key1”将nil 。 在这种情况下,我期望为“ Key1”设置默认值。 我需要做什么,以便用户不必进行设置即可使应用程序首次运行? 问候,Harish 回答1 有关完整的解决方案,请参见此问题。 您本质上想在访问设置之前运行以下代码: - (void)registerDefaultsFromSettingsBundle { NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"]; if(!settingsBundle) { NSLog(@"Could not find Settings.bundle"); return; } NSDictionary *settings = [NSDictionary
  • iOS如何使用Entitlement.plist指定我的应用程序的属性(iOS How to use Entitlement.plist to specify property of my app)
    问题 我正在使用Jailbreak + Appsync + iOS5.0.1设备(没有开发人员许可证,但可以通过一些技巧在设备上运行我的应用程序) 现在,我想使用私有API launchApplicationWithIdentifier:suspended:。 所以我需要添加 <key>com.apple.springboard.launchapplications</key> <true/> 到myApp.entitlements.plist文件。 然后它应该工作,但我仍然出现错误 'Receiver type 'UIApplication' for instance message does not declare a method with selector 'launchApplicationWithIdentifier:suspended:'' 然后我发现有人说,如果要使用Entitlements.plist,必须启用代码签名。 是真的吗我必须拥有开发者许可证吗? 还是有其他方法可以使用此方法? 我阅读了一些有关如何使用私有API的方法。 似乎很难。 我是iOS开发的新手。 谢谢你。 回答1 我在您的帖子中看到两个问题/问题: 1)你得到错误 实例消息的'接收者类型'UIApplication'没有使用选择器'launchApplicationWithIdentifier