标签: property-list

从plist文件恢复NSDictionary中的BOOL

我有一个plist文件,其中包含一系列字典.这是其中之一:

Fred字典
名称Fred
isMale [已选中框]

所以现在我用我从plist文件中读取的字典初始化我的Person对象:

 -(id) initWithDictionary: (NSDictionary *) dictionary {
    if (self = [super init])
    self.name = [dictionary valueForKey: @"Name"];
    self.isMale = ????
  }
Run Code Online (Sandbox Code Playgroud)

如何完成上面的代码,以便在plist文件中选中复选框时将self.isMale设置为YES,如果不是则选择NO.如果字典中没有键isMale,则最好也设置为NO.

cocoa boolean objective-c nsdictionary property-list

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

使用默认值在Mac上从命令行修改Plist

有没有人知道如何使用默认值从命令行修改Plist文件?目前URL types阵列下有两个词典; 我需要添加另一个.

在此输入图像描述

我尝试的每个命令都要么替换整个字典,要么创建一个新的数组URL types而不是编辑它.有关如何在默认设置(控制台Mac应用程序)而不是 PlistBuddy中完成此操作的任何想法?

macos shell console plist property-list

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

对"InputModeProperties.plist"的数百次访问落后于我的游戏(iPhone)

我有一个奇怪的问题与Tiny Wings的错误修正.在我的游戏中我使用的东西如下:

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];      
[userDefaults setFloat:musicVolume forKey:@"musicVolume"];
Run Code Online (Sandbox Code Playgroud)

用于保存一些首选项和高分表.在游戏结束时,当游戏画面出现时,游戏将高分保存到standardUserDefaults.它运行良好,直到游戏显示如下的UIAlertView:

UIAlertView *alert = [[UIAlertView alloc] init];
[alert setTitle:@"Get ready!"];
[alert setDelegate:self];
[alert addButtonWithTitle:@"Ok"];
[alert show];
[alert release];
Run Code Online (Sandbox Code Playgroud)

之后,AlertView消失每次游戏保存财产以后一会儿游戏滞后(在几秒钟一些设备)的standardUserDefaults.在游戏使用UITextField输入玩家名称后也会发生这种情况.在使用两个UIKit Elements中的一个之前游戏中没有任何延迟,但在使用它们之后游戏会延迟直到我重新启动应用程序.我用性能工具分析了这个问题,"I/O活动"仪器显示有数百个"开放 - 读取 - 关闭"访问

/System/Library/Frameworks/UIKit.framework/InputModeProperties.plist
Run Code Online (Sandbox Code Playgroud)

这导致了滞后.

我完全不知道该怎么做.有任何想法吗?

编辑:
苹果开发者论坛http://devforums.apple.com/message/424374#424374中有一个帖子,其中有人有同等的问题,似乎它只出现在iOS 4.3中.我已经测试了它,而且仅在我的4.3设备上发生了滞后(不是在3.1 iPod Touch和4.2 iPad上).

objective-c nsuserdefaults uikit property-list ios

22
推荐指数
1
解决办法
651
查看次数

尝试插入非属性值Objective C

嗨我正在尝试从餐馆对象创建一个fourates列表,我的应用程序有一个不同的餐厅列表,我希望能够为用户添加有利的餐厅,这个代码不起作用

- (IBAction)toggleFav:(id)sender {

    Restaurant *resto = [self restaure];

    NSMutableDictionary *dic = [[NSMutableDictionary alloc] init];
    [dic setObject:resto.price forKey:@"restoPrice"];
    [dic setObject:resto.restaurantId forKey:@"restaurantId"];
    [dic setObject:resto.restoAbout forKey:@"restoAbout"];
    [dic setObject:resto.restoAddress forKey:@"restoAddress"];
    [dic setObject:resto.restoBeverages forKey:@"restoBeverages"];
    [dic setObject:resto.restoCategory forKey:@"restoCategory"];
    [dic setObject:resto.restoEmail forKey:@"restoEmail"];
    [dic setObject:resto.restoLogo forKey:@"restoLogo"];
    [dic setObject:resto.restoName forKey:@"restoName"];
    [dic setObject:resto.restoPhone forKey:@"restoPhone"];
    [dic setObject:resto.restoCity forKey:@"restoCity"];

    NSArray *dicArray = [dic allKeys];


    if([sender isSelected]){
        //...
        [sender setSelected:NO];
        NSMutableArray *array = [[[NSUserDefaults standardUserDefaults] objectForKey:@"restoName"] mutableCopy];
        [array removeObject:dicArray];
        [[NSUserDefaults standardUserDefaults] setObject:array forKey:@"restoName"];

    } else {
        //...
        [sender setSelected:YES];
        NSMutableArray *array = …
Run Code Online (Sandbox Code Playgroud)

objective-c nsuserdefaults nsmutablearray property-list ios

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

复制Groovy类属性

我想以通用方式将对象属性复制到另一个对象(如果目标对象上存在属性,我将其从源对象复制).

我的代码使用ExpandoMetaClass工作正常,但我不喜欢这个解决方案.有没有其他方法可以做到这一点?

class User {
    String name = 'Arturo'
    String city = 'Madrid'
    Integer age = 27
}

class AdminUser {
    String name
    String city
    Integer age
}

def copyProperties(source, target) {
    target.properties.each { key, value ->
        if (source.metaClass.hasProperty(source, key) && key != 'class' && key != 'metaClass') {
            target.setProperty(key, source.metaClass.getProperty(source, key))
        }
    }
}

def (user, adminUser) = [new User(), new AdminUser()]
assert adminUser.name == null
assert adminUser.city == null
assert adminUser.age == null

copyProperties(user, …
Run Code Online (Sandbox Code Playgroud)

groovy properties class expandometaclass property-list

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

内存泄漏与Plist序列化

请帮我解决这个内存泄漏问题.在泄漏工具它示出了泄漏:NSCFString(32个字节)在库Foundation负责框架:NSPropertyListSerialization.我发布错误但仍然是泄漏.我错过了什么?非常感谢!

    NSPropertyListFormat format; 
    NSString *anError = nil;
    id plist;
    plist = [NSPropertyListSerialization propertyListFromData:rawCourseArray mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&anError];
    if (!plist){
          [anError release];
    } 
    NSArray *entries = (NSArray *)plist;
    for (NSDictionary *entry in entries) 
    {
      // DO SOMETHING
    }
Run Code Online (Sandbox Code Playgroud)

serialization memory-leaks objective-c property-list

12
推荐指数
1
解决办法
1272
查看次数

如何测试iPhone应用程序更新?

我已经在App Store中提供了一个iPhone应用程序(版本1.0),并准备提交更新版本(版本1.1).如何测试新升级以确保先前版本上的当前sqlite数据库和属性列表文件不会被删除/覆盖等?新版本假定sqlite数据库和属性列表中的旧数据仍然存在.

或者更好的是,是否有一个资源可以用来指导我在开发应用程序更新时要注意什么?

sqlite iphone updating property-list

11
推荐指数
2
解决办法
6030
查看次数

自定义Elisp plist缩进

我不喜欢Elisp中的plists是如何缩进的.

;; current   desired   Python (for comparison)
;; '(a 1     '(a 1     {'a': 1,
;;     b 2     b 2      'b': 2,
;;     c 3)    c 3)     'c': 3}
Run Code Online (Sandbox Code Playgroud)

试过M-x emacs-version24.3.1,跑了emacs -Q,输入了plist并按下了C-x h C-M-\.

当它不是列表时,这个缩进是有意义的:

(mapcar (lambda (x) (x + 1))
        '(1 2 3 4))
Run Code Online (Sandbox Code Playgroud)

如何更改格式设置,以便只有plists(或者,如果不可能,所有引用列表)具有所需的矩形缩进,但其他所有内容的缩进保持不变?我需要将其存储在本地.el文件中,这样当我编辑此文件时,它会根据需要缩进,但此行为不会在其他任何地方结束.

emacs elisp indentation property-list

9
推荐指数
2
解决办法
560
查看次数

XCode:快速打开属性列表文件,例如info.plist作为源代码?

在Xcode中,您可以通过选择"快速打开"文件File/Open Quickly.当我输入plist文件的文件名时,该文件将作为"Property List"打开.但我经常要将文件打开为"源代码".如何快速打开属性列表文件作为源代码?

xcode property-list

6
推荐指数
3
解决办法
1万
查看次数

预先填充核心数据,仅在应用程序首次启动时使用plist

我有一个plist文件,这是一个字典数组.每个字典包含一组字符串.每个字典代表一个名人.

我想要做的是在应用程序首次启动时使用此plist的内容填充Core Data,之后我想以某种方式检查核心数据是否存在我的数据,如果有数据,则从那里加载,否则再次从plist文件加载初始数据.

我知道可以从plist中填充核心数据,但是我建议一个可行的解决方案吗?还是有更好的方法?

插口

iphone core-data objective-c property-list ios

5
推荐指数
1
解决办法
1961
查看次数

在NSPropertyListSerialization中处理CFNull对象

在我的应用程序中,我试图序列化服务器响应字典并将其写入文件系统.但是我收到一些回复的错误"属性列表格式无效".原因是服务器响应中的CFNull对象.现在,服务器响应将继续改变,所以我没有明确的方法来删除CFNull对象().以下是我的代码:

NSString *anError = nil;
NSData *aData = [NSPropertyListSerialization dataFromPropertyList:iFile format:NSPropertyListXMLFormat_v1_0 errorDescription:&anError];
Run Code Online (Sandbox Code Playgroud)

解决这个问题的最佳方法是什么?如何一次性从服务器响应中删除所有CFNull对象?

iphone cocoa-touch objective-c nsdata property-list

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

具有NSNumber到NSString映射的NSDictionary是非属性列表对象

以下代码:

[[NSUserDefaults standardUserDefaults] setObject:photoIdToPath forKey:@"photo_id_to_path"];
Run Code Online (Sandbox Code Playgroud)

给我以下错误:

Attempt to set a non-property-list object {
417675729 = "/Users/k06a/Library/Application Support/iPhone Simulator/7.1/Applications/21163736-DF6F-4E79-8196-6A966C81ED1B/Documents/417675729";
} as an NSUserDefaults value for key photo_id_to_path
Run Code Online (Sandbox Code Playgroud)

这是photoIdToPath来自Xcode调试控制台的字典内容分析:

(lldb) po photoIdToPath
{
    417675729 = "/Users/k06a/Library/Application Support/iPhone Simulator/7.1/Applications/21163736-DF6F-4E79-8196-6A966C81ED1B/Documents/417675729";
}

(lldb) po [[[photoIdToPath allKeys] lastObject] class]
__NSCFNumber

(lldb) po [[[photoIdToPath allValues] lastObject] class]
NSPathStore2
Run Code Online (Sandbox Code Playgroud)

那么NSPathStore2是子类NSString,为什么这个字典不是属性列表?

更新:

在这里https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/nsuserdefaults_Class/Reference/Reference.html#//apple_ref/occ/instm/NSUserDefaults/setObject:forKey:我找到了正文:

value参数只能是属性列表对象:NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary.对于NSArray和NSDictionary对象,其内容必须是属性列表对象.请参阅"属性列表编程指南"中的"什么是属性列表?".

objective-c nsdictionary nsuserdefaults property-list ios

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

原子在 Maclisp 中具有属性。如何在 Clojure 中做同样的事情?

引自 (1975) Maclisp 参考手册:“每个原子符号都与一个属性列表相关联,可以使用plist函数检索它。”

Maclisp 属性列表是“指标/值”对的列表。在 Maclisp 中,

(get x y)
Run Code Online (Sandbox Code Playgroud)

得到 x 的 y 属性。

(putprop x 'banana y)
Run Code Online (Sandbox Code Playgroud)

将 x 的 y 属性设置为香蕉。

我的任务是将许多旧的 Maclisp 代码转换为 Clojure。我是 Clojure 的新手,但随着这个项目的展开,我不会太久。在我跑去自己写一些东西之前,我想知道 Clojure 是否已经有“属性列表”功能?或者接近的东西?

如果没有,组装的 Clojure 众神会让我做什么来实现这样的功能?请记住,Maclisp 中的每个原子符号都可以但不必具有属性列表。谢谢你。

clojure property-list maclisp

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