将字符串格式化为NSDate

时间:2014-05-08 02:50:24

标签: ios objective-c json

我试图将字符串转换为NSDate,但我收到了错误。

NSLog(@"JSON %@", responseObject);
NSArray *login = responseObject;
NSString *expires = [login valueForKey:@"expires"];
NSLog(@"%@", expires);

NSLog of responseObject(我使用MMRecord 1.3和AFNetworking 2)

<Login: 0x91dcdb0> (entity: Login; id: 0x91dcdf0 <x-coredata:///Login/t82A1AC69-501C-4C49-BAEE-C676FD655FDE2> ; data: {\n    \"access_token\" = \"******************\";\n    error = nil;\n    \"error_description\" = nil;\n    expires = \"Thu, 22 May 2014 02:30:21 GMT\";\n    \"expires_in\" = 1209599;\n    \"grant_type\" = nil;\n    issued = \"Thu, 08 May 2014 02:30:21 GMT\";\n    password = nil;\n    \"token_type\" = ***;\n    userName = \"su@email.in\";\n    userid = nil;\n})

当我NSLog那个字符串expires时,我得到这样的东西

(
"Thu, 22 May 2014 02:17:02 GMT"
)

如果我对该字符串执行任何操作,我就会收到此错误

[__NSArrayI length]: unrecognized selector sent to instance 0x9754950

我认为,出于某种原因,expires属于NSArray类型。你能告诉我这有什么问题吗?如何将其更改为NSDate?我是iOS的新手。在此先感谢!

2 个答案:

答案 0 :(得分:0)

看起来密钥@“expires”指的是数组,而不是字符串。如果您可以确定它始终是一个数组并且始终是非空的,那么您可以修复:

NSArray *expiresArray = login[@"expires"];
NSString *expires = expiresArray[0];

接下来你想要的是NSDate。请参阅答案here

答案 1 :(得分:-1)

NSString *expires = [[login valueForKey:@"expires"] firstObject];