كيفية الحصول على مجموعة من NSMutableData
-
09-12-2019 - |
سؤال
لدي ملف نصي يحتوي على 5 سلاسل.أحتاج إلى استخدام NSURLConnection للحصول على محتوى هذا الملف.لكن NSLog أظهر لي أن "التفريغ" فارغ.كيف يمكنني تحويل البيانات من NSMutableData إلى NSArray.المصفوفات لأنني بحاجة إلى إظهار تلك العناصر الخمسة في TableView.
NSURLRequest *theRequest=[NSURLRequest
requestWithURL:[NSURL URLWithString:@"http://dl.dropbox.com/u/25105800/names.txt"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection) {
receivedData = [NSMutableData data];
NSString *dump = [[NSString alloc] initWithData:receivedData
encoding:NSUTF8StringEncoding];
NSLog(@"data: %@", dump);
NSArray *outputArray=[dump componentsSeparatedByString:@"\n"];
self.namesArray = outputArray;
شكرا لك مقدما.راجع للشغل URL يعمل، يمكنك رؤية الملف.
المحلول
إذا كنت لا ترغب في استخدام مفوض، فيمكنك استخدام مكالمة متزامنة مع NSurLConnection، مثل هذا: giveacodicetagpre.
احذروا أن هذا لن يعمل بشكل غير متزامن.إذا كنت لا تريد تشغيله على الخيط الرئيسي وحظر الخيط / واجهة المستخدم الرئيسي، فكر في استخدام مؤشر ترابط منفصل لتنفيذ هذا الرمز أو استخدام GCD.
نصائح أخرى
إليك كيفية تنفيذ هذا الحل مع مندوب:
في ملف .h الخاص بك: giveacodicetagpre.
في ملف .m: giveacodicetagpre.
يجب عليك استخدام المفوض، ثم احفظ البيانات المستلمة في المستلزمات (بالطبع فارغة الآن .. أنت فقط اعتدالها.) ثم تقوم بتحويل البيانات إلى سلسلة، كما فعلت ذلك في مثالكوبعدإلقاء نظرة على NSURLConnectionDelegate
تحتاج إلى تنفيذ أساليب التفويض لـ NSURLConnection ليتم إعلامك بالبيانات الواردة.أنت تستخدم الأساليب غير المتزامنة.
لاحظ ذلك أيضًا [NSMutableData data]
مجرد إنشاء كائن بيانات فارغ ..لذلك لا تتوقع أن يحتوي على أي بيانات..
أقترح عليك أن تقرأ https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html#//apple_ref/doc/uid/20001836-BAJEAIEE(بالكامل!)