Note that dictionaries and arrays in property lists must also contain only property values.エラー

NSMutableArrayをNSUserDefaultsに保存しようとした時のエラー


↓こんなん。

2013-02-12 03:05:31.034 xxxxx[11607:1ca03] *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '(
    "assets-library://asset/asset.JPG?id=FA015831-5CD3-47CD-B039-CDA0EEAB0E6D&ext=JPG",
    "assets-library://asset/asset.JPG?id=BC121EF6-82BA-4C45-8B9F-972D579CEF88&ext=JPG",
    "assets-library://asset/asset.JPG?id=44BF9DDA-3D68-44DB-B1F0-21F0DD6CCE18&ext=JPG",
    "assets-library://asset/asset.JPG?id=AE5D14EC-56CD-47AF-82B1-B9154441514F&ext=JPG",
    "assets-library://asset/asset.JPG?id=3EC400D3-9AC7-455E-8E79-D76B91D85695&ext=JPG",
    "assets-library://asset/asset.JPG?id=ECA9739E-3FF2-453E-8DC0-B1DD8E1248B6&ext=JPG",
    "assets-library://asset/asset.JPG?id=069C4339-EA67-4EBD-BAAD-F6F7D932117A&ext=JPG",
    "assets-library://asset/asset.JPG?id=89C675FD-D647-44D8-ACCE-CCD75A04A3E5&ext=JPG",
    "assets-library://asset/asset.JPG?id=7B73F43A-736C-4B39-A9E9-7B2253908DEA&ext=JPG",
    "assets-library://asset/asset.JPG?id=5DB66DD7-72A6-4E65-877D-D535D4A62C50&ext=JPG",
    "assets-library://asset/asset.JPG?id=63F66638-AF24-4883-A65A-10FF20831AE5&ext=JPG"
)' of class '__NSArrayM'.  Note that dictionaries and arrays in property lists must also contain only property values.

見ての通りAssetsLibaryのURLを保存しようとした時に発生。




NSMutableArrayに文字列を入れてたつもりがNSURLだったのが原因でした。


なので↓こんな感じに置き換えて対処。

    id          addPath = /* AssetsLibrary の URL  */
    NSString*   strPath;  /* 保存する文字列 */

    if ([addPath isKindOfClass:[NSString class]]) {       // 文字列なら
        strPath = addPath;                                // そのまま取得
    } else if ([addPath isKindOfClass:[NSURL class]]) {   // NSURLなら
        strPath = [addPath absoluteString];               // 文字列で取得
    } else {                                              // それ以外は
        NSLog(@"class error = %@",addPath);               // とりあえずエラー吐いておく
    }

/* あとはstrPathをNSMutableArrayに入れて、
   NSUserDefaults setObjectで配列丸ごと保存するだけ  */