标签: plist

ObB-c静态库中的NSBundle,plist和其他资源

我在Xcode中创建了一个静态库,我可以在其他项目中成功使用它.但是,对于像plists这样的资源,我发现必须在我的库中引用在项目所在的主项目中引用的任何plist.

在我的静态库项目中,我的plist包含在目标的"Copy Bundle Resources"阶段.在我的代码中,这是我正在做的事情:

NSBundle *mainBundle = [NSBundle mainBundle];
NSString *filePath   = [mainBundle pathForResource:@"MyClassParams" ofType:@"plist"];

NSMutableDictionary* params = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];
Run Code Online (Sandbox Code Playgroud)

如果我使用mainBundle并且MyClassParams.plist包含在主项目中,那么一切都很好.如果MyClassParams.plist包含在库项目中,则它不起作用.

假设[NSBundle mainBundle]引用了错误的静态方法,我将其替换为:

NSBundle *mainBundle = [NSBundle bundleForClass:[MyClass class]];
Run Code Online (Sandbox Code Playgroud)

这也不起作用.

那么,是否可以将plist或任何其他资源包含在静态库中 - 或者我是否必须在使用lib的项目中包含我需要的内容?

iphone plist nsbundle

19
推荐指数
2
解决办法
1万
查看次数

使用Core Data有哪些优势?(而不是plist)

我对iOS和编程比较陌生,之前我做了一个应用程序,但它使用了plist进行存储,我将其保存到文档文件夹中.现在,我正在考虑切换到Core Data,但它看起来有点复杂,我不确定它是否适用于我想要的东西.我将有一堆数据需要绘制,所以我不确定Core Data是否最适合这个,因为我似乎无法在.xcdatamodeld文件中创建数组类型.Core Data还有哪些其他优势?它更快吗?更容易使用(一旦你设置)?

更新:对于任何想知道的人,我完成了应用程序,了解如何使用Core Data是完全值得的,而且我原本以为它的复杂程度要低得多.用钳子做这件事本来就是地狱.他们开始做这件事的方式起初看起来有些神秘,但如果你刚开始使用它,你就会明白它.关系真是令人敬畏的关系.

iphone core-data objective-c plist

19
推荐指数
2
解决办法
5773
查看次数

使用shell脚本编辑plist文件

我使用pkgbuild创建了一个默认的Component Property List文件.该文件看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-     1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>BundleHasStrictIdentifier</key>
        <true/>
        <key>BundleIsRelocatable</key>
        <true/>
        <key>BundleIsVersionChecked</key>
        <true/>
        <key>BundleOverwriteAction</key>
        <string>upgrade</string>
        <key>RootRelativeBundlePath</key>
        <string>MyApp.app</string>
    </dict>
</array>
</plist>
Run Code Online (Sandbox Code Playgroud)

我想使用shell脚本修改此文件.我尝试使用默认值写但它没有做任何事情.

有什么办法呢?(例如:我想将BundleIsRelocatable设置为false)

macos shell scripting plist pkgbuild

19
推荐指数
4
解决办法
1万
查看次数

如何在ios中的Plist文件中保存,检索,删除和更新我的数据?

我正在创建一个iPhone应用程序,在其中我获得所有国家/地区的名称,徽标和玩家名称.我想将数据保存在服务器.plist而不是sqlite服务器中.我不知道如何创建一个plist文件DocumentDirectory并保存数据.

请有人建议我如何在plist文件中保存数据.

plist ios

18
推荐指数
2
解决办法
3万
查看次数

在启动的StartCalendarInterval中,"Day"和"Weekday"之间有什么区别?

我正在使用launchd来运行一些自动化任务,我想知道'Day'和'Weekday'之间有什么区别.

根据http://discussions.apple.com/thread.jspa?threadID=1361809,有一个"微妙"的差异,可能导致launchd行为不端.

最后,我想在每个工作日(周一至周五)早上8点运行一个plist,但我不知道如何获得相当于

0 8 * * 1-5
Run Code Online (Sandbox Code Playgroud)

macos cron launchd plist

17
推荐指数
1
解决办法
8199
查看次数

如何在没有"可选"的情况下从plist打印字符串?

我从plist中的字典加载一个值但是当我将它打印到控制台时,它会打印:可选(星期一标题)而不仅仅是"星期一标题".

如何在打印时摆脱我的值的Optional()?

var plistPath = NSBundle.mainBundle().pathForResource("days", ofType: "plist")
var plistArray = NSArray(contentsOfFile: plistPath!) as NSArray!

    for obj: AnyObject in plistArray {
        if var dicInfo = obj as? NSDictionary {
            let todayTitle: AnyObject? = dicInfo.valueForKey("Title")
            println(todayTitle)
        }
    }    
Run Code Online (Sandbox Code Playgroud)

plist swift

17
推荐指数
2
解决办法
2万
查看次数

字典和数组之间有什么区别?

字典和数组之间有什么区别,特别是在使用PLIST文件时?使用一个优于另一个有什么好处?谢谢!

objective-c nsdictionary plist nsarray ios

16
推荐指数
1
解决办法
2万
查看次数

如何使用PlistBuddy访问其属性指定的PreferencesS元素?

目前我正在使用此代码

  /usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" "Test/Settings.bundle/Root.plist"
Run Code Online (Sandbox Code Playgroud)

在构建阶段的脚本部分中,将产品版本放在应用程序设置的只读字段中.该字段具有首选项数组的位置1(从0开始).

我问是否有可能使用更强大的1来访问该字段,因为我或其他开发人员在开发过程中可能会意外地改变位置.

我可以访问该元素,指定它的标识符,无论其位置如何?

为了更好地解释我的需求,我写下了一个例子.我需要把像1.2.345进入string第2节点dictarray即我需要从改变0.0.01.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>PSGroupSpecifier</string>
    </dict>
    <dict>
        <key>DefaultValue</key>
        <string>0.0.0</string>
        <key>Key</key>
        <string>version</string>
        <key>Title</key>
        <string>Version</string>
        <key>Type</key>
        <string>PSTitleValueSpecifier</string>
    </dict>
    <dict>
        <key>DefaultValue</key>
        <string>0</string>
        <key>Key</key>
        <string>build</string>
        <key>Title</key>
        <string>Build</string>
        <key>Type</key>
        <string>PSTitleValueSpecifier</string>
    </dict>
         ...
Run Code Online (Sandbox Code Playgroud)

xcode plist

16
推荐指数
2
解决办法
3万
查看次数

将xcarchive转换为IPA的错误 - 单束存档+缺少plist方法值

我正在尝试将我的xcarchive转换为IPA(XCode 7.1.1).以下命令

xcodebuild 
    -exportArchive -archivePath foo.xcarchive -exportPath . -exportFormat IPA
Run Code Online (Sandbox Code Playgroud)

失败了

路径'foo.xcarchive'中的存档不是单包存档

由于上面的命令在技术上已弃用,我还尝试了新的表单:

xcodebuild 
    -exportArchive -archivePath foo.xcarchive -exportPath . 
    -exportOptionsPlist ipa.plist
Run Code Online (Sandbox Code Playgroud)

ipa.plist如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>method</key>
    <string>app-store</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

然后导致错误:

错误:exportArchive:关键'方法'的exportOptionsPlist错误:预期{}之一,但找到了app-store

现在,尝试调试这个我打开了xcarchive文件夹并检查了它的结构.我注意到我在同一级别上有一个文件夹,Products\Applications\foo.app因此我将其删除并再次尝试无效(相同的结果).然后我继续从foo.app中删除文件,直到我只剩下DWARF二进制文件 - 仍然没有雪茄(相同的结果),尽管这可能是因为我通过手动删除文件搞砸了应用程序签名.

xcodebuild plist ios ipa xcarchive

16
推荐指数
1
解决办法
4247
查看次数

在Cocoa/Objective C中保护xml plists

我正在编写一个应用程序,它在启动时从包中的am xml plist读取信息.plist中的信息已通过多天的工作进行编译,我希望确保在分发后不能从另一方轻松地从应用程序包中提取它.有没有办法保护或加密包含在您的应用包中的xml plists?

任何帮助将不胜感激,请.

security encryption cocoa objective-c plist

15
推荐指数
1
解决办法
3458
查看次数