Tôi đang làm việc trong iOS 4.3 & iOS 5 với tính năng tham chiếu tự động. Tôi tuyên bố một đối tượng NSDate trong giao diện của tôi:NSDate chuyển thành NSNumber MYSTERY
NSDate *fingerprintsDate;
Sau đó, tôi đặt rằng NSDate - sử dụng trình gỡ lỗi và bước qua nó có giá trị tôi mong đợi:
fingerprintsDate = [NSDate date];
Cuối cùng, tôi cố gắng có được thời gian từ ngày:
if (fingerprintsDate == nil || [fingerprintsDate timeIntervalSinceNow] > 6)
Và đó là nơi nó bị treo với selector không được công nhận: "2012/01/18 23: 07: 46,662 Netapporter [473: 707] - [NSCFNumber timeIntervalSinceNow]: chọn không được công nhận gửi đến ví dụ 0x194490"
Theo debugger, NSDate thân yêu của tôi đọc: "fingerprintsDate = (NSCFNumber *) 0x194490 139" - khi tôi in mô tả nó đọc: "{value = 139,0000000000, type = kCFNumberFloat32Type}"
Tôi không làm bất cứ điều gì khác w/fingerprintsDate bất cứ nơi nào khác trong mã - nhưng bằng cách nào đó nó biến thành một NSNumer ... Bất kỳ ý tưởng làm thế nào để ngăn chặn nó?
Phải có một số mã khác "ở giữa" đang thực hiện điều đó (cụ thể là ghi ngày của bạn). Bạn có thể đăng thêm một số mã không? – dasblinkenlight
Tại sao bạn sẽ kiểm tra xem ngày đó có phải là số không hoặc trên 6? Kiểm tra nó với điều này cho tôi: if ([[myNum className] isEqualToString: @ "NSCFNumber"]) {NSLog: (@ "là số)} – CodaFi
Không có vấn đề với mã được hiển thị ở đây nhưng sau khi đọc lỗi báo cáo có thể là bạn đang cố gắng sử dụng giá trị trả về của phương thức "timeIntervalSinceNow" ở sai vị trí (tham số), thực sự "- (NSTimeInterval) timeIntervalSinceNow" trả về giá trị float. – kulss