iPhone - NSDATA من عنوان URL الخاص بالملف المحلي
سؤال
انا املك NSURL
الكائن الذي يعطيني مسار ملف محلي (في مجلد المستندات). أريد أن أملك NSData
كائن مع محتويات هذا الملف. حاول استخدام dataWithContentsOfURL:
ولكن هذا فشل. أعرف أن الملف موجود لأن iPhone SDK
إرجاع المسار.
يمكن للشخص من فضلك قل لي كيف يمكنني الحصول على NSData
كائن من URL
من ملف محلي؟
شكرا.
المحلول
// Given some file path URL: NSURL *pathURL
// Note: [pathURL isFileURL] must return YES
NSString *path = [pathURL path];
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];
نصائح أخرى
للحصول على هذا العمل الذي تحتاج فقط إلى القيام به:
NSURL *imgPath = [[NSBundle mainBundle] URLForResource:@"search" withExtension:@"png"];
NSString*stringPath = [imgPath absoluteString]; //this is correct
//you can again use it in NSURL eg if you have async loading images and your mechanism
//uses only url like mine (but sometimes i need local files to load)
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:stringPath]];
UIImage *ready = [[[UIImage alloc] initWithData:data] autorelease];
تأكد من أن عنوان URL المحلي الخاص بك يبدأ ب "ملف: //"ثم عليك فقط القيام بذلك:
NSData *fileData = [NSData dataWithContentsOfFile:fileURL.path];
ل SWIFT3 وجدت إجابة من عنوان URL التالي مفيدة
(كنت أتناول المسار التالي، بعد التقاط الصورة باستخدام البرنامج المساعد PhoneGap
ملف: ///var/mobile/containers/data/application/b64b06de-7976-45cf-9be2-661f0f309a06/tmp/abcded.jpg)
https://stackoverflow.com/a/41043447/6383908.
إذا دع VideOrl = URL (سلسلة: UrlString)، دع VideoData = TRY؟ البيانات (Contentsof: VideoRL) {// إضافة رمز Alamofire هنا}