[解決済み] このiOSはどんな嫌味なエラーなのか?
質問
私は、カレンダーの日付を並べ替えるために、次のようなコードを使用しています。
#if !(TARGET_IPHONE_SIMULATOR)
NSString *formatString = [NSDateFormatter dateFormatFromTemplate:@"HH:mm dd MMM yyyy" options:0
locale:[NSLocale currentLocale]];
[fmt setDateFormat:formatString];
#else
[fmt setDateFormat:@"HH:mm dd MMM yyyy"];
#endif
シミュレータで実行すると、すべてOKです。デバイス上で実行すると、この嫌味なデバッグメッセージが表示されます。
2012-09-19 22:40:13.972 appname [4923:907] *。 -[__NSCFCalendar components:fromDate:]: 日付をnilにすることはできません。
私は本当に、あなたは何を意味するのでしょうか? この操作で日付がnilだとどうなるんだろう?
とりあえず例外は回避されました。
これらのエラーのうちのいくつかは、この苦情と一緒に報告されることになります。 そして、さらなる違反は単に を無言で実行します。以下は、今回これが発生した 今回発生したバックトレースです(コンパイラの最適化により、いくつかのフレームが欠落している可能性があります) バックトレースです (コンパイラの最適化により、いくつかのフレームが欠落しています)。
笑うしかないのですが、私の
dateFormatFromTemplate:
のコードに問題があるのかわかりません。どんな助けでも感謝します。
Xcode V 4.5 を実行中です。
UPDATEです。
<ブロッククオートバックトレースです。
0 CoreFoundation 0x39ff0e55 + 84
1
APPNAME 0x00040be1
-[MeetingsViewController dateAtBeginningOfDayForDate:] + 140
ということは、私の
dateAtBeginningOfDayForDate
メソッドでうまくいっていないようです。これは以下のようなものです。
/*
Break down a given NSDate to its bare components for sorting
*/
- (NSDate *)dateAtBeginningOfDayForDate:(NSDate *)inputDate
{
// Use the user's current calendar and time zone
NSCalendar *calendar = [NSCalendar currentCalendar];
NSTimeZone *timeZone = [NSTimeZone systemTimeZone];
[calendar setTimeZone:timeZone];
// Selectively convert the date components (year, month, day) of the input date
NSDateComponents *dateComps = [calendar components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit fromDate:inputDate];
// Set the time components manually
[dateComps setHour:0];
[dateComps setMinute:0];
[dateComps setSecond:0];
// Convert back
NSDate *beginningOfDay = [calendar dateFromComponents:dateComps];
return beginningOfDay;
}
私はこのメソッドを使って、与えられたNSDateをその中心的な構成要素に分解し、より効率的にソートできるようにしています。しかし、私のアプリは国際的でなければならず、それが
NSLocale
を使用して日付出力をフォーマットする理由です。どうやら、私の
dateAtBeginningOfDayForDate
を国際的に動作するように変更する必要があるようです。
どのように解決するのですか?
このページは nneonneo に感謝します。
私の問題は、私のアプリが国際的に動作する必要があるため、ユーザーの場所を基準にして日付を表示する必要があることです。私は、単に
NSDateFormatter
を作成して、次のように文字列の日付を渡します。
NSString *formatString = [NSDateFormatter dateFormatFromTemplate:@"HH:mm dd MMM yyyy" options:0
locale:[NSLocale currentLocale]];
date = [fmt dateFromString:[NSString stringWithFormat:@"%@ %@", obj.meetingTime, obj.meetingDate]];
しかし、問題は日付の書式をローカライズしていたことです。
前に
という文字列で渡してしまったことです。私の場合
NSDateFormatter
はローカライズ後、このようになりました。
MMM dd, yyyy, HH:mm
私はローカライズ後のフォーマットは、ローカライズ後にさまざまな方法で見ることができます。
という書式で文字列を渡すと
HH:mm dd MMM yyyy
という形式の文字列を渡すと
nil
.
今となっては当たり前のことですが -.-
そこで、日付を作成するときにローカライズするのではなく、標準的な書式である
HH:mm dd MMM yyyy
. そして、表示するときに
NSDate
をそれぞれのユーザーのロケールに合わせます。
関連
-
[解決済み】「The breakpoint will not currently be hit」を改善するには?このドキュメントにはシンボルが読み込まれていません。" という警告はどうすれば改善されますか?
-
[解決済み】Xcode - 'NSUnknownKeyException', reason: ... this class is not key value coding-compliant for the key X" エラーの修正方法とは?
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] Objective-Cのtypedef enumとは何ですか?
-
[解決済み] iOSのバージョンを確認する方法を教えてください。
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み] iPhone UITextField - プレースホルダーの文字色を変更する
-
[解決済み] Swiftで配列に要素を追加する
-
[解決済み】iOSアプリの名前を変更する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[iOS]コンパイルエラー:ld: アーキテクチャ x86_64 のシンボルが見つかりません。
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] 文字列の長さを取得する
-
[解決済み] UITextViewのプレースホルダー
-
[解決済み] iOS 8 UITableViewのセパレータインセット0が機能しない件
-
[解決済み] UITableViewCell、スワイプ時に削除ボタンを表示させる
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] Swift で HTTP リクエストを行うにはどうしたらいいですか?
-
[解決済み] Swiftの配列を文字列に変換するには?
-
[解決済み] NSDateFormatterのロケール「feechur」に対応する最善の方法を教えてください。