Ruby 正确的目标处理:重命名产品

Ruby 正确的目标处理:重命名产品,ruby,cocoapods,xcode-project,Ruby,Cocoapods,Xcode Project,参考 如何通过上面的gem'Xcodeproj'正确执行xcode项目目标的重命名 class AnnoyingClass attr_reader(:target, :project) def setProductName(name) puts %Q'I will rename product to #{name}' @target.product_name = name puts %Q'I did it! name now: #{@ta

参考

如何通过上面的gem'Xcodeproj'正确执行xcode项目目标的重命名

class AnnoyingClass
    attr_reader(:target, :project)
    def setProductName(name)
       puts %Q'I will rename product to #{name}'
       @target.product_name = name
       puts %Q'I did it! name now: #{@target.product_name}' #ok here
    end

    # project directory is a /path/to/*.xcodeproj
    def openProject(project_directory)
      @project = Xcodeproj::Project.open(project_directory)
      @target  = @project.targets.select{|target| target.name !~ /Tests/}.first

      if @target
          self.setProductName('Wow')
      end

      #@project.save doesn't help, the same result

      #but here is something strange with 'PRODUCT NAME' value
      #old value 'PRODUCT NAME' appears 
      puts "uh, everything is not fine enough #{@target.pretty_print}"

    end
end

这个问题非常不清楚。甚至两个方法都属于同一个类或其后代吗?我只能说,在openProject中,您将数组实例分配给@target,但在renameProject中,您发送的是product_name方法,该方法可能在数组中不存在。如果您使用renameProject命名方法,您不应该使用@project变量而不是@target吗?谢谢您的评论,问题已编辑