我在我的应用程序中添加了存折,当系统是iOS6.0时它可以正常工作。当系统是iOS7.1时它出现错误。

我检查代码发现
PKPass *newPass = [[PKPass alloc] initWithData:passData error:&error];
Run Code Online (Sandbox Code Playgroud)
在iOS6.0中生成PKPass时得到一个正确的PKPass,当系统是iOS7.1时得到一个nil。
错误包含消息是:
错误域=PKPassKitErrorDomain 代码=1“无法读取通行证,因为它无效。” UserInfo=0x175cd2f0 {NSUnderlyingError=0x175c2c10 “不止一个字段有键 'phone'。字段键必须是唯一的。”, NSLocalizedDescription=无法读取通行证,因为它无效。}
存折的数据我从服务器上得到的。代码如下
- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[self.connectionData appendData:data];
}
Run Code Online (Sandbox Code Playgroud)
将数据写入文件后,代码如下:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
写入文件后我想显示它,代码如下:
NSString* passFile = [[NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask,YES) objectAtIndex:0] stringByAppendingPathComponent:name];
NSString * newPassStr = [[NSString alloc] initWithContentsOfFile:passFile encoding:NSUTF8StringEncoding error:nil]; …Run Code Online (Sandbox Code Playgroud)