我在我的应用程序中添加了存折,当系统是iOS6.0时,它工作correctly.When,系统是iOS7.1,它会出现一个错误。

我检查了代码发现
PKPass *newPass = [[PKPass alloc] initWithData:passData error:&error];当在iOS6.0中生成PKPass时,得到一个正确的PKPass,当系统为iOS7.1时,得到一个零。
错误包含的消息是:
错误Domain=PKPassKitErrorDomain Code=1“由于pass无效而无法读取。UserInfo=0x175cd2f0 {NSUnderlyingError=0x175c2c10“多个字段具有'phone‘键。字段键必须是唯一的。”,无法读取NSLocalizedDescription=The传递,因为它无效。}
我从server.Code获得的存折数据如下所示
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.connectionData appendData:data];
}将数据写入文件后,代码如下:
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES);
NSString* filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"pk.pkpass"];
if ([self.connectionData writeToFile:filePath atomically:YES]) {
if (![PKPassLibrary isPassLibraryAvailable]) {
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Error"
message:@"PassKit not available"
delegate:nil
cancelButtonTitle:@"Pitty"
otherButtonTitles:nil];
[alert show];
[alert release];
return;
}
}写完文件后,我想显示它,代码如下:
NSString* passFile = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) objectAtIndex:0] stringByAppendingPathComponent:name];
NSString * newPassStr = [[NSString alloc] initWithContentsOfFile:passFile encoding:NSUTF8StringEncoding error:nil];
NSData *passData = [NSData dataWithContentsOfFile:passFile];
NSError* error = nil;
PKPass *newPass = [[PKPass alloc] initWithData:passData error:&error];然后,当我得到PKPass *newPass时,将出现iOS7.1中的错误。在iOS6,这是可以的。
谁能告诉我原因?非常感谢。
发布于 2014-05-29 07:26:28
你的错误信息就是告诉你你需要知道的一切。
您的pass.json中有重复的密钥。backFields数组和auxiliaryFields数组都包含一个带有键phone的项。根据护照包装格式参考,字段键必须是唯一的。
我注意到这个pass是使用Passsource生成的。您可能想让库迪特 ( Passsource )知道,因为他的服务不应该允许生成这样的通行证。
https://stackoverflow.com/questions/23926534
复制相似问题