哪个是在plist文件中保存数据(数字)的最佳方法

时间:2014-02-11 13:38:42

标签: ios objective-c

最初我有一个由三个属性组成的对象(数字0到12)。 NSCoder和相关问题使我避免使用对象,现在我直接存储三个NSNumber。我以这种方式用这三个值保存NSMutableArray

NSMutableArray *data=[[NSMutableArray alloc] initWithObjects: cardSign, cardNumber, cardColor, nil];

我保存并检查数据是否已保存

NSLog(@"wrote %hhd", [data writeToFile:path atomically:YES]);

我尝试检索数据:

NSArray *dataRead = [[NSArray alloc] initWithContentsOfFile:path];
    if (dataRead)
    {
        cardSign = [dataRead objectAtIndex:0];
        cardNumber = [dataRead objectAtIndex:1];
        cardColor = [dataRead objectAtIndex:2];
    }

保存变量值之前是正确的。 当我尝试检索值时,我得到全0或(null)。 哪个是在plist文件中存储三个数字的最佳方法,我该如何检索它?

1 个答案:

答案 0 :(得分:0)

您的对象“cardSign”,“cardNumber”和“cardColor”很可能不是实际对象。将数组内容或NSArray内容存储到文件时,所有对象必须是Apple识别的对象,NSString,NSNumber等...

例如,如果cardNumber定义如下:

int cardNumber;

然后当“数据”被初始化时,如果应该是(仅注意cardNumber)

NSMutableArray *data=[[NSMutableArray alloc] initWithObjects: cardSign, [NSNumber numberWithInt:cardNumber], cardColor, nil];

此行直接来自“initWithContentsOfFile”调用的Apple API描述的讨论部分。

“aPath标识的文件中的数组表示必须只包含属性列表对象(NSString,NSData,NSArray或NSDictionary对象)。此数组包含的对象是不可变的,即使数组是可变的。