首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Passbook生成PKPass错误

Passbook生成PKPass错误
EN

Stack Overflow用户
提问于 2014-05-29 05:48:15
回答 1查看 4.1K关注 0票数 5

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

我检查了代码发现

代码语言:javascript
复制
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获得的存折数据如下所示

代码语言:javascript
复制
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.connectionData appendData:data];
}

将数据写入文件后,代码如下:

代码语言:javascript
复制
    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;
    }
}

写完文件后,我想显示它,代码如下:

代码语言:javascript
复制
    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,这是可以的。

谁能告诉我原因?非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-29 07:26:28

你的错误信息就是告诉你你需要知道的一切。

您的pass.json中有重复的密钥。backFields数组和auxiliaryFields数组都包含一个带有键phone的项。根据护照包装格式参考,字段键必须是唯一的。

我注意到这个pass是使用Passsource生成的。您可能想让库迪特 ( Passsource )知道,因为他的服务不应该允许生成这样的通行证。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23926534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档