2011-07-25 26 views
6

Tôi đang cố gắng lấy thời gian hệ thống tính bằng mili giây. Cho rằng tôi đã tuyên bố:NSNumber và NSTimeInterval

NSNumber *createdTimeInMilliSec; //in class declaration 

và thuộc một trong các chức năng ví dụ của tôi, tôi thực hiện:

self.createdTimeInMilliSec= ([NSDate timeIntervalSinceReferenceDate]*1000); //ERROR: incompatible type for argument 1 of 'setCreatedTimeInMilliSec:' 

timeIntervalSinceReferenceDate lợi nhuận trong NSTimeInterval, vậy làm thế nào để chuyển đổi đó vào NSNumber? Hoặc những gì tôi đang làm sai?

Trả lời

22

NSTimeInterval được typedefed như sau: typedef double NSTimeInterval;.

Để tạo một NSNumber với, sử dụng:

NSNumber *n = [NSNumber numberWithDouble:yourTimeIntervalValue]; 
+0

cảm ơn tất cả mọi người vì câu trả lời và giải thích – XMarshall

+2

'NSNumber * n = @ (yourTimeIntervalValue);' cũng hoạt động và trông đẹp hơn. – rr1g0

1

NSTimeInterval là typedef cho giá trị gấp đôi. Vì vậy, sử dụng constructor tiện NSNumber 's numberWithDouble: như sau:

self.createdTimeInMilliSec= [NSNumber numberWithDouble:([NSDate timeIntervalSinceReferenceDate]*1000)]; 
1

Như NSTimeInterval là một đôi, bạn có thể làm

NSNumber *myNumber = [NSNumber numberWithDouble: myTimeInterval]; 
2

Tôi không chắc chắn thì rõ ràng từ các câu trả lời khác - nhưng NSTimeInterval là thực sự chỉ là một typedef'ed đôi. Bạn có thể nhận được một NSNumber từ nó bằng cách thực hiện [NSNumber numberWithDouble:timeInterval] hoặc thậm chí ngắn gọn hơn @(timeInterval).

Các vấn đề liên quan