Search code examples
objective-ccomparisonversionstring-comparison

Compare version numbers in Objective-C


I am writing an application that receives data with items and version numbers. The numbers are formatted like "1.0.1" or "1.2.5". How can I compare these version numbers? I think they have to be formatted as a string first, no? What options do I have to determine that "1.2.5" comes after "1.0.1"?


Solution

  • This is the simplest way to compare versions, keeping in mind that "1" < "1.0" < "1.0.0":

    NSString* requiredVersion = @"1.2.0";
    NSString* actualVersion = @"1.1.5";
    
    if ([requiredVersion compare:actualVersion options:NSNumericSearch] == NSOrderedDescending) {
      // actualVersion is lower than the requiredVersion
    }