كيفية تهيئة NSString إلى NSMutableString?
-
08-07-2019 - |
سؤال
هل هناك أي طريقة تهيئة 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)
لا تنتمي إلى StackOverflow