- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用Stig Brautaset的 JSON 框架序列化了一些对象,包括 NSDates(不直接支持)。
我决定使用 NSDate 的描述作为日期的 JSONFragment 表示(我不关心这样做会导致精度的微小损失)。
延长Stig Brautaset的 JSON 框架包含 NSDates,我定义了一个类别:
@interface NSDate (NSDate_JSON) <JSONInitializer>
-(NSString *) JSONFragment;
@end
为了从 JSON 重新创建 NSDate(和其他类),我使用以下初始值设定项定义了一个协议(protocol):
@protocol JSONInitializer <NSObject>
-(id) initWithJSONRepresentation: (NSString *) aJSONRepresentation;
@end
我在使用此初始化程序时遇到问题。在 NSDate 的例子中,它只调用 initWithString: ,这就是我遇到的麻烦:它总是返回 nil 。这是实现:
#import "NSDate+JSON.h"
@implementation NSDate (NSDate_JSON)
-(NSString *) JSONFragment{
NSString *strRepr = [self description];
return [strRepr JSONFragment];
}
-(id) initWithJSONRepresentation:(NSString *)aJSONRepresentation{
return [self initWithString: aJSONRepresentation]; //returns nil!
}
@end
我不确定发生了什么事。此外,编译器警告我找不到 initWithJSONRepresentation: 中的 initWithString: 方法。
有人知道会发生什么吗?
可以获取测试用例的完整源代码 here .
最佳答案
在尝试将字符串转换为日期时,您应该始终使用NSDateFormatter
,反之亦然。 -initWithString:
确实存在于 Mac 上,但不存在于 iOS 上。它要求字符串的格式极其精确。使用日期格式化程序是迄今为止最好的解决方案。
顺便说一句,如果 Apple 决定更改 -[NSDate description]
的格式,您的代码将会损坏。
关于objective-c - NSDate的initWithString : is returning nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5837777/
基本上,问题是 - 以下内容本质上是相同的吗? NSString *value1 = ...; NSString *value2 = [[NSString alloc] initWithString:
从内存的角度来看以下两行之间有什么区别吗 NSString *dbFilePath =[[NSString alloc]initWithString:[[NSBundle mainBundle] pa
NSString *str = [[NSString alloc]init]; str = [str initWithString:@""]; 这段代码崩溃了。如果我像下面这样使用,就可以了。 NSS
这是我的情况,我有一个 UICollectionView 嵌套在 UITableVIew 中,表 View 垂直滚动,集合 View 在表 View 内水平滚动。 我已经将 tableview 作为集
尝试创建一个 URL,像这样在 iOS 浏览器中打开: NSString *urlStr = [[NSString alloc] initWithFormat:@"http://example.com
这个问题在这里已经有了答案: 关闭 9 年前。 Possible Duplicate: NSDate initWithString 我写了下面一行代码: [[NSDate alloc] initWi
有人能告诉我为什么这段代码会失败吗?调用 initWithString 后 url 为 nil。正在成功填充变量 documentsDirectory。 NSArray *paths = NSSe
我看到它声称以下内容“几乎相同”: foo([NSString stringWithString:@"blah"]) # version 1 foo([[[
我正在遵循 Google 的有关使用 NearbyMessages API 的文档。我正在使用 Swift3。我有以下代码来设置应用程序以发布到附近。 let messageManager = GNS
我尝试使用上述标题进行多次搜索,并根据我的搜索提供了尽可能多的建议,但无法解决问题。当我在越狱的 iPad 上构建时,我的应用程序崩溃了。但是对于不是越狱的设备,它起作用了。调用以下函数是崩溃的原因:
此代码导致错误: - (NSString *)cachedTwitterOAuthDataForUsername:(NSString *)username { NSString *cache
我知道任何 init... 方法都会初始化一个新对象,而 NSString stringWithString 会将参数字符串复制为一个新对象。我也明白,作为对象的所有者,我可以控制我分配的任何对象的释
我有这样的代码。 else if ([controlIn isKindOfClass:UITextField.class]) { UITextField *cast = (UITextFiel
很容易在 Playground 中重现 import Foundation let urlString = "" let url = NSURL(string: urlString) print(ur
我试图在UIWebView中打开一个包含Unicode字符的URL: var jrURL = new NSURL("http://δπθ.gr"); 结果是: Could not initialize
这是我的 tableViewCell 代码的实现,我在这里所做的只是从我的 MainViewController 获取数据并将其分配给两个不同的 UILabel。 问题出在 UILabel *subT
ios 中初始化字符串变量的两种方式有什么区别(,adv/disadv)? NSString *var = @"value" 和 NSString *var =[ [NSString alloc] i
我认为这个问题已经足够清楚了,但仍然 - 有什么区别: NSString *string = @"Hello world!"; 和 NSString *string = [[NSString allo
我是一名优秀的程序员,十分优秀!