gpt4 book ai didi

ios - nskeyedarchiver 不适用于 ios8 但适用于 ios7 和模拟器

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:18 25 4
gpt4 key购买 nike

所以我将 NSKeyedArchiver 用于心愿单,它在 iOS 7 和模拟器上完美运行,但在 iOS 8 设备上运行不佳。

这里是我使用的代码:

wishlist.m

- (void)viewDidLoad
{
NSString *voirexpo = @"viensdeexpo";
[[NSUserDefaults standardUserDefaults] setObject:voirexpo forKey:@"voirexpo"];
[[NSUserDefaults standardUserDefaults] synchronize];


[super viewDidLoad];

self.navigationController.navigationBar.barStyle = UIStatusBarStyleLightContent;
refait=0;
refait2=0;
wishlist * car2=[NSKeyedUnarchiver unarchiveObjectWithFile:@"myWishlist1.bin"];
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSData * objectData = [defaults objectForKey:@"myWishlist1.bin"];
if(objectData != nil)
{
wishlist * car3 = [NSKeyedUnarchiver
unarchiveObjectWithData:objectData];
NSLog(@"YOOOOOOUUUUHOOOOO %@", [car3 description]);

}
NSLog(@"YOOOOOOUUUUHOOOOO %@", [car2 description]);


rent=@"0";

self.navigationItem.backBarButtonItem =
[[UIBarButtonItem alloc] initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:nil
action:nil];

}

-(NSString*)pathForCacheFile:(NSString*)fileName
{

NSArray*documentDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString*path = nil;
if (documentDir)
{
path = [documentDir objectAtIndex:0];
}
return [NSString stringWithFormat:@"%@/%@", path, fileName];
}

-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

if(_dataSource)
{
_dataSource=nil;
}


_dataSource=[NSKeyedUnarchiver unarchiveObjectWithFile:[self pathForCacheFile:@"myWishlist1.bin"]];

tableview.scrollEnabled=YES;

[tableview reloadData];

}

cardescription.m(我选择要放入心愿单的汽车的 View )

-(NSString*)pathForCacheFile:(NSString*)fileName
{

NSArray* documentDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString* path = nil;

if (documentDir)
{
path = [documentDir objectAtIndex:0];
}

return [NSString stringWithFormat:@"%@/%@", path, fileName];
}

static wishlist *mywishlist;
-(void)saveInWishlist
{
if(mywishlist)
mywishlist=nil;
mywishlist=[wishlist new];

mywishlist.exponom=wishexpo;
mywishlist.idvoiture=TelephoneCellulaire;
mywishlist.imvoiture=dataimage;
mywishlist.objid=objectId;

{
NSMutableArray *temp=[NSKeyedUnarchiver unarchiveObjectWithFile:[self pathForCacheFile:@"myWishlist1.bin"]];


// mywishlist.imageSrc=filePath;

if(temp.count==0 || temp==nil)
{
NSMutableArray*newArr=[NSMutableArray array];

[newArr addObject:mywishlist];

[NSKeyedArchiver archiveRootObject:newArr toFile:[self pathForCacheFile:@"myWishlist1.bin"]];
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
// userObject is the object we want to save...
[defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:newArr] forKey:@"myWishlist1.bin"];
[defaults synchronize];

}
else
{
[temp addObject:mywishlist];
[NSKeyedArchiver archiveRootObject:temp toFile:[self pathForCacheFile:@"myWishlist1.bin"]];
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
// userObject is the object we want to save...
[defaults setObject:[NSKeyedArchiver archivedDataWithRootObject:temp] forKey:@"myWishlist1.bin"];
[defaults synchronize];
}
}
}

- (IBAction)BACKO:(id)sender {

[self saveInWishlist];

NSLog(@"ICIII %@",wishexpo);

wishlist * car2=[[wishlist alloc]init];
car2.exponom=wishexpo;
car2.idvoiture=TelephoneFix;
car2.imvoiture=dataimage;
car2.objid=objectId;
[NSKeyedArchiver archiveRootObject:car2 toFile:@"
"];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Wishlist"
message:@"This car has been successfully added to your wishlist"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];

}

-(NSString*)pathForCacheFile1:(NSString*)fileName
{

NSArray*documentDir = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString*path = nil;
if (documentDir)
{
path = [documentDir objectAtIndex:0];
}
return [NSString stringWithFormat:@"%@/%@", path, fileName];
}

最佳答案

我在使用 NSKeyedArchiver 时遇到了同样的错误,并且仅从 iOS8 开始。就我而言,我是这样做的:

[defaultManager changeCurrentDirectoryPath:customDirectory];
[NSKeyedArchiver archiveRootObject:blankDictionary toFile:filename];

但是当我这样做时它起作用了:

NSString fullPath = [NSString stringWithFormat:@"%@/%@", customDirectory, filename];
[NSKeyedArchiver archiveRootObject:blankDictionary toFile:fullPath];

我的猜测是 NSKeyedArchiver 中存在错误,相对路径名不起作用。如果您的搜索路径中有相对路径名,请尝试将其删除。

关于ios - nskeyedarchiver 不适用于 ios8 但适用于 ios7 和模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26103326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com