我尝试将NSMutableArray
设置为NSUserDefault
中的对象。但它会出现以下错误。
尝试设置非属性列表
这就是我尝试的方式。
[[NSUserDefaults standardUserDefaults] setObject:OutboundArray forKey:@"outbound"];
[[NSUserDefaults standardUserDefaults] synchronize];
注意: OutboundArray
类型为NSMutableArray。这有什么问题。我在方法中执行此操作。请帮助。
这就是我为OutboundArray赋值的方法
- (void)assignvaluedForarrays
{
OutboundArray = nil;
InboundArray = nil;
FlightSearchSelected *flightSearch = [FlightSearchSelected new];
JourneyTy = flightSearch.returnJType;
DirectRNot = flightSearch.returnNonStoporNot;
fromAcode = flightSearch.returnFromPort;
toAcode = flightSearch.returnToPort;
FlightCnt = FinalDetails.FlightCount;
OutboundArray = [NSMutableArray array];
InboundArray = [NSMutableArray array];
//all round trips
if ([JourneyTy isEqualToString:@"true"])
{
for (int i=0;i<FlightCnt;i++)
{
FinalValues *finalValue = testingArray[i];
NSString *legNumber = finalValue.legnumber;
if ([legNumber isEqualToString:@"1"])
{
[OutboundArray addObject:testingArray[i]];
}
else
{
[InboundArray addObject:testingArray[i]];
}
}
}
//only one ways trips
else
{
self.finaltableViewbottomLayout.constant = 180;
for (int i = 0;i<FlightCnt;i++)
{
[OutboundArray addObject:testingArray[i]];
}
}
}
* testingArray数据来自前一个视图控制器,根据表视图的索引路径。
答案 0 :(得分:1)
好的,看看你的代码 - 问题在这里:
[OutboundArray addObject:testingArray[i]];
我敢打赌,testingArray
包含非属性列表项。所以不是以下任何一个实例:
NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。
如果您的testingArray
内有自定义NSObject
,那么这就是您的问题所在。如果是这种情况,则需要先将数组存档到NSData
,然后再将其存储在NSUserDefaults