Có thư viện Mục tiêu-C (hoặc C) (tương thích với vị trí cốt lõi) có thể cho tôi biết thời gian bình minh và hoàng hôn cho bất kỳ ngày dương lịch cụ thể nào không?Thư viện mục tiêu-C cho mặt trời mọc và hoàng hôn?
Trả lời
EDSunriseSet là một trình bao bọc Objective-C mã nguồn mở và miễn phí cho các thường trình ngôn ngữ C được tạo bởi Paul Schlyter.
Tính toán được thực hiện hoàn toàn bằng các thủ tục mã C. EDSunrisetSet cầu những tính toán đến các lớp học Cocoa chung (NSDate, NSTimeZone, ...)
Tôi đã sử dụng thư viện có tên là SUNWAIT. Rất đơn giản, hiệu quả - dễ sử dụng!
Bạn đã sử dụng ứng dụng này với Objective-C/for iOS chưa? Ngoài ra, có bất kỳ hướng dẫn bắt đầu nào không? – Moshe
Không - chỉ thẳng C. Bạn có thể biên dịch nó dưới dạng tệp "C" chuẩn và chỉ cần gọi vào đó. (Đó là những gì tôi đã làm trong ứng dụng của tôi, nhưng nó không phải là một ứng dụng iPhone). – Brad
Brad - Tôi có nên biên dịch riêng biệt hoặc đưa nó vào dự án của tôi và sử dụng các cuộc gọi API không? – Moshe
Tôi đã thực sự chuyển số KosherJava Library và lên kế hoạch sớm có mặt trên GitHub!
Edit:
KosherCocoa hiện đang sống trên GitHub! Nếu bạn không cần mã liên quan đến lịch hebrew, bạn có thể xóa tệp "lịch". Các tệp lớp được phân tách độc đáo thành các thư mục dựa trên các loại tính toán mà chúng thực hiện.
Chỉnh sửa: KosherCocoa chúng tôi sẽ được thay thế bằng bản cập nhật hiện đại và đầy đủ hơn ngay khi có thể. Liên kết trên bây giờ chỉ vào repo cũ.
thử này một: https://github.com/berkley/ObjectiveCUtil
Chỉ cần một lưu ý .. nếu bạn sử dụng Berkley một ... tốt nó không hoạt động (ở Úc ít nhất). Mặc dù nó bao gồm mã Paul Schlyter C, rất tuyệt.
Nếu bạn muốn nó hoạt động ở bất cứ nơi nào, tốt nhất là chỉ cần calc các ngày trong UTC.
Trong SunriseAndSunset.m, hãy thay thế mã từ tăng gấp đôi; bộ đôi; như sau:
sun_rise_set(theYear, theMonth, theDay, lon, lat, &rise, &set);
int hours = HOURS(rise);
int mins = MINUTES(rise);
int sethrs = HOURS(set);
int setmins = MINUTES(set);
NSTimeInterval riseOffset = ((hours * 60) + mins) * 60;
NSTimeInterval setOffset = ((sethrs * 60) + setmins) * 60;
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZ"];
NSString *dateStr = [NSString stringWithFormat:@"%i-%02d-%02dT00:00:00+0000", theYear, theMonth, theDay];
NSDate *utcMidnight = [formatter dateFromString:dateStr];
NSDate *utcSunrise = [utcMidnight dateByAddingTimeInterval:riseOffset];
NSDate *utcSunset = [utcMidnight dateByAddingTimeInterval:setOffset];
[formatter release];
[gregorian release];
return [NSDictionary dictionaryWithObjectsAndKeys:utcSunrise, @"sunrise", utcSunset, @"sunset", nil];
Có thể nó không hoạt động ở Úc vì bạn đã được đưa ra một ngày trong múi giờ GMT. Tôi đặt cược nó có '+ 0000' thay vì' + 1000' trong NSDate khi bạn đang gỡ lỗi. Lần sau sử dụng '[date descriptionInLocale: [NSLocale currentLocale]]' để gỡ lỗi ngày tháng. :-) –
Khó nhớ lại điều đó nhưng tôi khá chắc chắn rằng không phải như vậy, nó còn liên quan nhiều hơn đến các giả định trong mã và không thử nghiệm trên các ngoại lệ. Nhưng dù sao, các công trình trên độc đáo và ví dụ của họ đã cứu tôi một thời gian. Vì vậy, đó là tốt! :) – DavidAWalsh
Ah không phải lo lắng :-) Tôi đang sử dụng nó ở Úc vì vậy tôi hy vọng họ sửa lỗi. Dường như làm việc sau gần một tuần thử nghiệm. –
Hãy thử điều này: https://github.com/mourner/suncalc/
Rất rõ ràng và dễ dàng để thực hiện, mặc dù nó được viết bằng javascript nhưng nó rất dễ dàng để chuyển đổi nó để
Mục tiêu-C
Nó cũng hỗ trợ tính toán mặt trời, vị trí mặt trăng và tọa độ.
Sau khi không tìm thấy một thay thế Swift đơn giản, tôi đã tạo Solar: thư viện được xây dựng Swift cho Sunrise/Sunset.
Cái này phù hợp với tôi. Gần đây (tháng 1 năm 2013) đã cập nhật một số lỗi bộ nhớ, do đó nếu bạn đang sử dụng nó, hãy đảm bảo bạn nhận được mã mới nhất. – mpemburn