কীভাবে NSArray উপাদানগুলিকে NSString এ যুক্ত করবেন?


126

এনএসএসআরটিংয়ের একটি এনএসআরাই দেওয়া, তাদের একসাথে কোনও একক এনএসএসস্ট্রিং (একটি পৃথককারী) এর সাথে যুক্ত হওয়ার কোন দ্রুত উপায় আছে?


আমাকে অবশ্যই অন্ধ হতে হবে! বা ক্লান্ত। বা উভয় ...

2
আপনি যদি এর জন্য এনএসএসস্ট্রিং ডক্স অনুসন্ধান করেন তবে আপনি এটি কখনও পাবেন না। এটি এনএসএরে!
বোলোনাড

উত্তর:


314
NSArray * stuff = /* ... */;
NSString * combinedStuff = [stuff componentsJoinedByString:@"separator"];

এটি বিপরীত -[NSString componentsSeparatedByString:]



1

এই বৈকল্পিকটিও রয়েছে, যদি আপনার আসল অ্যারেতে কী-মান অবজেক্ট থাকে যা থেকে আপনি কেবল একটি সম্পত্তি বাছাই করতে চান (যা স্ট্রিং হিসাবে ক্রমিকায়িত হতে পারে):

@implementation NSArray (itertools)

-(NSMutableString *)stringByJoiningOnProperty:(NSString *)property separator:(NSString *)separator
{
    NSMutableString *res = [@"" mutableCopy];
    BOOL firstTime = YES;
    for (NSObject *obj in self)
    {
        if (!firstTime) {
            [res appendString:separator];
        }
        else{
            firstTime = NO;
        }
        id val = [obj valueForKey:property];
        if ([val isKindOfClass:[NSString class]])
        {
            [res appendString:val];
        }
        else
        {
            [res appendString:[val stringValue]];
        }
    }
    return res;
}


@end

আপনার কোডে একটি মেমরি ফাঁস রয়েছে, মিট্যটেবল কপি তার অনুলিপিটি অবলম্বন করছে তাই আপনার শেষের দিকে ফিরে যেতে হবে [পুনরায় অটোরিলেজ]। ব্যাট থেকে সরাসরি মিউটটেস্টিং তৈরির পরিবর্তে মিউটেবলকপি করার কোনও কারণ নেই।
ওয়ার্মস্টেরার

@ থাই ওয়ার্মস্টেরার: এই কোডটি ARC এর জন্য উল্লেখ করতে ভুলে গেছেন। এছাড়াও, মিউটেবল কপিটি হ'ল @-সাইন্ট্যাক্স (যেমন [@ [] মিউটেবলকপি] একটি পরিবর্তনীয় নসরয়ের জন্য) ব্যবহার করে অবজেক্টগুলির পরিবর্তিত সংস্করণ তৈরি করার জন্য আধুনিক উদ্দেশ্য-সি কনভেনশন। পারফরম্যান্সকে বুদ্ধিমান করে কি পার্থক্য তা জানেন না।
বেন জি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.