以下は私の.hファイルにあります:
NSDictionary *originalValues;
@property (nonatomic, retain) NSDictionary *originalValues;
これは、NSDictionaryを初期化するための.mファイルです。
@synthesize originalValues;
- (void)viewDidLoad {
// copy original values when view loaded
originalValues = [[NSDictionary alloc] initWithObjectsAndKeys:place.city, @"city", place.cuisine, @"cuisine",
place.latitude, @"latitude", place.longitude, @"longitude", place.name, @"name", place.rating,
@"rating", place.state, @"state", place.street, @"street", place.telephone, @"telephone",
place.timesVisited, @"times visited", place.uppercaseFirstLetterOfName, @"first letter",
place.website, @"website", place.zipcode, @"zipcode", nil];
}
問題は、最初の4つのオブジェクトとキーのみが追加されることです。その後、place.name、@ "name"で始まる辞書には追加されません。辞書全体でNSLogを実行し、出力されたのは前述の最初の4つの値だけだったので、IIはplace.nameでNSLogを実行し、値を出力しているので、このキー/値に対しても何かを出力する必要があることがわかります。ペア。ここに欠けているものはありますか?すべての値が最初にNSDictionaryに追加されないのはなぜですか?
それらが追加されない理由は、辞書の終わりを示すオブジェクトがnilであるためです。各オブジェクトがそうnil
ではないことを確認する必要があり、そうである場合は[NSNull null]
、その代わりに使用できます。self.originalValues = ...
適切なメモリ管理にも使用します。辞書を使用するものがNSNull
値をチェック/処理できることを確認してください。
使用例gnu ternary extension
:
self.originalValues = [[NSDictionary alloc] initWithObjectsAndKeys:
place.city ?: [NSNull null], @"city",
place.cuisine ?: [NSNull null], @"cuisine",
place.latitude ?: [NSNull null], @"latitude",
place.longitude ?: [NSNull null], @"longitude",
place.name ?: [NSNull null], @"name",
place.rating ?: [NSNull null], @"rating",
place.state ?: [NSNull null], @"state",
place.street ?: [NSNull null], @"street",
place.telephone ?: [NSNull null], @"telephone",
place.timesVisited ?: [NSNull null], @"times visited",
place.uppercaseFirstLetterOfName ?: [NSNull null], @"first letter",
place.website ?: [NSNull null], @"website",
place.zipcode ?: [NSNull null], @"zipcode",
nil];
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加