NSUserDefaults出错,同时在iOS中将NSMutable数组设置为对象,目标为C

时间:2016-03-01 07:50:11

标签: ios objective-c nsmutablearray nsuserdefaults

我尝试将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数据来自前一个视图控制器,根据表视图的索引路径。

1 个答案:

答案 0 :(得分:1)

好的,看看你的代码 - 问题在这里:

[OutboundArray addObject:testingArray[i]];

我敢打赌,testingArray包含非属性列表项。所以不是以下任何一个实例:

  

NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary。

如果您的testingArray内有自定义NSObject,那么这就是您的问题所在。如果是这种情况,则需要先将数组存档到NSData,然后再将其存储在NSUserDefaults