最初我有一个由三个属性组成的对象(数字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文件中存储三个数字的最佳方法,我该如何检索它?
答案 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对象)。此数组包含的对象是不可变的,即使数组是可变的。