سؤال

هل هناك أي طريقة تهيئة NSString إلى NSMutableString?و أيضا عكس النظام ؟

-(void)st:(NSString *)st
{
  NSMutableString str = st; // gives warning..
  NSLog(@"string: %@", str);
}
هل كانت مفيدة؟

المحلول

وNSString هو تمثيل غير قابل للتغيير (أو طريقة عرض للقراءة فقط في أسوأ الأحوال). لذلك كنت بحاجة إلى أي المدلى بها لNSMutableString إذا كنت تعرف انها قابلة للتغيير أو عمل نسخة قابلة للتغيير:

-(void)st:(NSString *)st
{
  NSMutableString *str =  [[st mutableCopy] autorelease];
  NSLog(@"string: %@", str);
}

وأنا autoreleased لأن mutableCopy إرجاع نسخة تهيئة حديثا مع الاحتفاظ العد من 1.

نصائح أخرى

NSString *someImmutableString = @"something";
NSMutableString *mutableString = [someImmutableString mutableCopy];

هام! mutableCopy بإرجاع كائن ، لذلك يجب إما الإفراج أو autorelease ذلك.

ويمكنك ضبط NSMutableString إلى NSString، ولكن ليس العكس

NSString *str =  [NSMutableString alloc]init];

وعلى ما يرام، ولكن

NSMutableString *str = [[NSString alloc]init];

وليست كذلك. هذا هو لأن NSMutableString هو فئة فرعية من NSString، لذلك فمن هو 'NSString. ولكن هل يمكن أن تخلق سلسلة قابلة للتغيير من NSString مع

NSMutableString *mStr = [str mutableCopy];

سويفت 2.0

لمستخدمي سويفت، الأعمال التالية في كسكودي 7.

var str : String = "Regular string"
var mutableStr : NSMutableString = NSMutableString(string: str)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top