Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSUserDefaults和存储值_Objective C_Xcode_Nsmutablearray_Nsuserdefaults - Fatal编程技术网

Objective c NSUserDefaults和存储值

Objective c NSUserDefaults和存储值,objective-c,xcode,nsmutablearray,nsuserdefaults,Objective C,Xcode,Nsmutablearray,Nsuserdefaults,您好,我正在尝试将数组存储到NSUserDefaults中,但遇到了问题。该方法接受一个NSDictionary,我将它存储到一个数组中,并将其存储到NSUSerDefaults中。问题是,当我制作一个mutableCopy时,它会说它是一个字典,而不是nsmutablearray类型?这个方法是我第一次调用NSUserDefaults,所以我不确定为什么会发生错误?这是密码谢谢 +(void) getRecentPhoto:(NSDictionary *)recentPhoto{ NSUse

您好,我正在尝试将数组存储到NSUserDefaults中,但遇到了问题。该方法接受一个NSDictionary,我将它存储到一个数组中,并将其存储到NSUSerDefaults中。问题是,当我制作一个mutableCopy时,它会说它是一个字典,而不是nsmutablearray类型?这个方法是我第一次调用NSUserDefaults,所以我不确定为什么会发生错误?这是密码谢谢

+(void) getRecentPhoto:(NSDictionary *)recentPhoto{

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
 //stores it as a dictionary? error happens here
NSMutableArray* recentPhotos = [[defaults objectForKey:@"recentPhoto"] mutableCopy];
NSLog(@"%@", [recentPhotos class]);
if(!recentPhotos) recentPhotos = [NSMutableArray array];
BOOL copy = NO;

//these will crash the program
NSLog(@"%@", [[recentPhotos objectAtIndex:0] objectForKey:@"id"]);
NSLog(@"%@", [recentPhoto objectForKey:@"id"]);

 //this checks if it has been stored before by using an id key
for(int i =0; i < [recentPhotos count]; i++){

    if ([[[recentPhotos objectAtIndex:i] objectForKey:@"id"] isEqualToString:[recentPhoto objectForKey:@"id"]] ) {
        copy = YES;
    }
}
if(copy ==NO)
[recentPhotos addObject:recentPhoto];
[defaults setObject:recentPhoto forKey:@"recentPhoto"];
[defaults synchronize];


}

我认为问题在于,在这个方法的最后,您尝试将
recentPhoto
(一个字典)存储到用户默认值中,而不是
recentPhotos
(您要存储的可变数组)


实际上,我认为它不会在第一次调用此方法时崩溃,因为
recentPhoto
未存储在用户默认值中。但是在那之后,它会崩溃。

但是当我做第一个NSLogYes时,这个方法崩溃了,它没有objectAtIndex:方法,因为你从用户默认值中得到的是一个字典,而不是一个数组。就像现在这样的时候,我想知道我使用的一些应用程序背后有什么代码。。。
 NSInvalidArgumentException', reason: '-[__NSCFDictionary objectAtIndex:]: unrecognized selector