Objective C: A cleaner way to check if a string isn't empty before creating and assigning a string to a dictionary key?

objective-c check string null or empty
how to return an empty string in java
return empty object c#
how to return null java
return empty object java
java return null or throw exception
java return null string

I am creating an NSMutableDictionary and assigning an NSString (test and test1) to a parameter key.

  NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];

  if (test.length) {
      dictionary[@"test"] = test;

  if (test1.length) {
      dictionary[@"test1"] = test1;

This method does work. However, I am going to eventually have more strings and don't want a bunch of if statements. I don't want the dictionary keys to exist if the string is empty or nil.

Not sure if there is a way around this.

I thought about creating a separate function that accepts an array of key string and array of string values and use a for loop to see if string value is empty. Then, return a dictionary once the for loop ends. However, you can't insert nil into an NSArray

Something like this

- (void)updateDic:(NSMutableDictionary *)dic withString:(NSString *)str {
    if (!str || [str isEqualToString:@""]) {

    dic[str] = str;

And then just iterate over all strings and use that method.

What is the right way to check for a null string in Objective-C?, As others have pointed out, there are many kinds of "null" under Cocoa/Objective C. But one further thing to note is that [title  Objective C: A cleaner way to check if a string isn't empty before creating and assigning a string to a dictionary key? Hot Network Questions If electrons are identical and indistinguishable, how can we say current is the movement of electrons?

What I'd do is create a NSMutableDictionary category, something like this:


- (void)setStringIfNotNil:(NSString *)string forKey:(id <NSCopying>)key {
    if (!string || !string.length) { return; }
    self[key] = string;

Then you can use it like this:

NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
[dictionary setStringIfNotNil:test forKey:@"test"]
[dictionary setStringIfNotNil:test1 forKey:@"test1"]

SQL Server Database Programming with Visual Basic.NET: Concepts, , C) All used data objects are declared here, such as the Connection, Command, and A returned object GetSQLResult that is instantiated from our base class I​) By checking the HasRows property of the DataReader, we can determine K) A cleaning job is performed to release all data objects used in this Web method. Objective-C memory management within the Cocoa API. Objective-C uses the ARC supported within the Cocoa API. ARC is a feature for both Objective-C and Swift languages that manages memory with no programmer effort. The problem is that the code isn’t available for procedural C and some other APIs like Core Graphics.

There are three ways according to me.. The first one use the category in which you have to write if condition only single time and you can use it in any class of your project.

Second one by making a separate method to do that task(to check string nil or not and adding into the dictionary).

And the third one , just add all in an array and and perform the action in a loop.

Practical Database Programming With Visual C#.NET, The functionality of this method is to display the detailed course information related to A. The query string is defined with 6 data columns that contain the detailed course information. C. The Command object is initialized with the Connection object, F. If this fill is successful, which can be detected by checking the Count  SOCKit. String <-> Object Coding for Objective-C. Rhymes with "socket". With SOCKit and SOCPattern you can easily transform objects into strings and vice versa.. Two examples, cuz devs love examples.

The syntax:

dictionary[@"test"] = test

will remove the value from the dictionary if test is nil (it's a difference between the normal -setObject:forKey: method and the -setObject:forKeyedSubcript: which that syntax invokes). However, that will not work for empty strings.

As mentioned in another answer, you could make an NSDictionary category method to check, then call that method instead.

You could also just use the regular dictionary[key] = value syntax, then when you are done, do:

[dictionary removeObjectsForKeys:[dictionary allKeysForObject:@""]];

If it's possible to have the keys repeated, and you don't want an empty string overriding an earlier valid valid, you would have to check each time -- either by the category method, or using a local macro or inline function or local method.

static inline void SetValidVal(NSMutableDictionary *dictionary, NSString *key, NSString *val) {
    if (val.length) { dictionary[key] = val; }


#define MY_SET_VALID_VAL(dictionary, key, val) if ((val).length) dictionary[key] = (val)

If the key names need to be the same as the name of the local variable, you can play other games with macros (this also assumes the local variable name "dictionary":

#define MY_UPDATE_VAL(val) if (val.length) dictionary[@#val] = (val)

Then MY_UPDATE_VAL(test1); would expand to:

if (test1.length) dictionary[@"test1"] = test1;

That's a bit magic though and probably not recommended.

Ios Check Null String, 123" is a string. typeahead : object: null: Configuration of typeahead itself. a 1) Check if a string is empty using the equals method of the String class. Alternative names are C string , which refers to the C programming language and ASCIIZ Using length is effective, but to me empty() is a bit cleaner and should also  Also, Swift requires less code. Whereas Objective-C is verbose when it comes to string manipulation, Swift employs string interpolation, without placeholders or tokens. Unified files make code easier to maintain. Again, an old standard of the C language holds Objective-C back: a two-file requirement.

is_object - Manual, PHP 5, PHP 7). is_object — Finds whether a variable is an object <?php /** * * @param string $data Serialized data If $check is left empty, it will just check if &$object is an object. <?php function I'm not even sure how to articulate this, so I'm going to just include test code. Maybe Cleaning it up even more: <?php However, with clang, there is a new way to keep C++ out of your Objective-C headers: ivars in class extensions. Class extensions (not to be confused with categories ) have existed in Objective-C for a while: they let you declare additional parts of the class's interface outside the public header before the @implementation block.

Is it better to return NULL or empty values from functions/methods , An empty object implies data has been returned, whereas returning null clearly indicates that In the end, there's no single best way of doing things. advocate not returning nulls in order to keep code clean, avoid extra error-handling blocks, etc. Do they need to check if the name is an empty String instead of null? Swift unifies the language in a way that Objective-C never has. The support for Automatic Reference Counting (ARC) is complete across the procedural and object-oriented code paths.

What senior developers can learn from beginners, I told her to Google if there is a way to check if char is a letter. not the most efficient (memory or compute wise), it's very clean and gets the job done. Using another object oriented language such as C++ will quickly prove that the which caused each to be replaced by the empty string, presumably due  Yeah, sadly this was possible with just Objective C. I guess this is more a question for evaluators of the security. We've been able to play around with a few things to avoid having keys/password data in long term memory, but having an easy "clean" method for String variables seems impossible.

  • How your strings are looks like? Is it array?
  • I've thought about this too, but seems strange I have to keep sending the dictionary over and over. However, this might be the best way.
  • You send reference not all the dictionary. So it is safe to do like this.
  • Okay sounds good. I rewarded you the answer. Also, shouldn't I check length instead? It seems to be working, however after checking stackoverflow it seems people recommended your way.
  • if (str.length > 0) is a bit simpler to write and subjectively easier to read. Anyway, assigning nil to dictionary is ignored.