【问题标题】:Objective-C Simplest way to create comma separated string from an array of objectsObjective-C 从对象数组中创建逗号分隔字符串的最简单方法
【发布时间】:2012-05-06 19:01:34
【问题描述】:

所以我有一个 nsmutablearray,里面有一堆对象。我想为每个对象的 id 值创建一个逗号分隔的字符串。

【问题讨论】:

    标签: objective-c arrays swift nsmutablearray


    【解决方案1】:

    斯威夫特

    var commaSeparatedString = arrayOfEntities.joinWithSeparator(",")
    

    【讨论】:

    • 问题指定了一种编程语言。请考虑将其更改为目标 - c。
    • @handiansom 那是 2012 年。
    • 是的,我也注意到了。 ^ ^
    【解决方案2】:

    使用NSArray实例方法componentsJoinedByString:

    在 Objective-C 中:

    - (NSString *)componentsJoinedByString:(NSString *)separator
    

    在斯威夫特中:

    func componentsJoinedByString(separator: String) -> String
    

    示例:

    在 Objective-C 中:

    NSString *joinedComponents = [array componentsJoinedByString:@","];
    

    在斯威夫特中:

    let joinedComponents = array.joined(seperator: ",")
    

    【讨论】:

    • 所以我数组中的对象有 4 或 5 个属性,我如何告诉它只加入 id 值?
    • 如果你只记录你的一个对象,你会得到什么?只是 id 值?如果是这样,这就是您将通过 componentsJoinedBuString 获得的效果:试试看。
    • @Jhorra 如果你想要一个只有一个属性的数组,你可以做一些非常棒的事情:[<NSArray instance> valueForKey:@"<string representation of property name>"],它会返回一个只有那个属性的数组。然后在结果上调用componentsJoinedByString:。在幕后,框架正在遍历数组中的所有对象并对它们调用valueForKey:。键值编码太棒了!
    • 更多 KVC 集合操作符,请查看:nshipster.com/kvc-collection-operators
    【解决方案3】:

    从数组创建字符串:

    -(NSString *)convertToCommaSeparatedFromArray:(NSArray*)array{
        return [array componentsJoinedByString:@","];
    }
    

    从字符串创建数组:

    -(NSArray *)convertToArrayFromCommaSeparated:(NSString*)string{
        return [string componentsSeparatedByString:@","];
    }
    

    【讨论】:

      【解决方案4】:

      如果你在 Swift 中寻找相同的解决方案,你可以使用这个:

      var array:Array<String> = ["string1", "string2", "string3"]
      var commaSeperatedString = ", ".join(array) // Results in string1, string2, string3
      

      要确保您的数组不包含 nil 值,您可以使用过滤器:

      array = array.filter { (stringValue) -> Bool in
          return stringValue != nil && stringValue != ""
      }
      

      【讨论】:

      • 这似乎不适用于 Swift 中的 NSMutableArray。搜索 Google 尚未找到答案。
      • @Twan 谢谢,你的答案(几乎)正是我想要的......几乎,因为我需要连接可选字符串,其中一些可能是 nil (所以我没有不想连接它们),但是这个解决方案不接受可选字符串,它需要解开它们......也许你过去有类似的问题,如果是这样,你能帮我吗?
      • @cdf1982 我已经更新了我的答案。您可以使用过滤器方法来做到这一点。
      • @Twan 太完美了,非常非常非常感谢!很抱歉这是一条评论,我不能接受!
      猜你喜欢
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2012-02-21
      相关资源
      最近更新 更多