আইফোন - স্থানীয় ফাইলের ইউআরএল থেকে এনএসডিটা


85

আমার একটি NSURLঅবজেক্ট রয়েছে যা আমাকে স্থানীয় ফাইলের (ডকুমেন্ট ফোল্ডারে) পথ দেয়। আমি NSDataএই ফাইলের বিষয়বস্তু সহ একটি বস্তু পপুলেট করতে চাই । ব্যবহার করার চেষ্টা করা হয়েছে dataWithContentsOfURL:তবে এটি ব্যর্থ হয়েছে। আমি জানি ফাইলটি উপস্থিত রয়েছে কারণ আইফোনটি SDKফিরে আসে।

কেউ দয়া করে আমাকে বলতে পারেন যে আমি কীভাবে একটি স্থানীয় ফাইলের NSDataথেকে কোনও জিনিস পেতে পারি URL?

ধন্যবাদ


"তবে এটি ব্যর্থ হয়" এর অর্থ কী?
মার্কো

মানে এই মুহুর্তে হিমশীতল! একটি ব্যতিক্রম দেয়। আমি একটি ভিডিওর ডেটা অ্যাক্সেস করার চেষ্টা করছি, যার ইউআরএলটি আমরা ইউআইজিগ্রেশন পিকারকন্ট্রোলার থেকে পেয়েছি
হারিয়েছে ইনট্রান্সিট

দেখে মনে হচ্ছে আপনি এমন কোনও বিষয় পাস করার চেষ্টা করছেন যা কোনও এনআরএল নয়। আপনি কীভাবে ফাইল ইউআরএল পাচ্ছেন, আপনি কি নিশ্চিত যে কোনও ইউআরএল এবং এনএসএসস্ট্রিং নয়?
মার্কো

@ আলিখাকি: দয়া করে তুচ্ছ সম্পাদনা করবেন না, আপনার পরিবর্তনগুলি পর্যালোচনা সারিতে দু'জন লোক লাগে। আপনি যদি এটির উন্নতি করতে কোনও প্রশ্ন সম্পাদনা করেন তবে "ধন্যবাদ" এর মতো অকেজো জিনিসগুলি নির্দ্বিধায় ফেলুন তবে কেবল সেটির জন্য প্রশ্নটি সম্পাদনা করবেন না। ধন্যবাদ!
ক্রিস লুয়েঙ্গো

উত্তর:


163

সুইফট কোড:

let data = FileManager.default.contents(atPath: path)

4
ContentOfFile ফাইল পাথের সাথে একটি এনএসএস স্ট্রিং নেয়। আমি একটি এনএসআরএল অবজেক্ট পাচ্ছি।
44

আমি নিশ্চিত নই তবে, বরাদ্দের পরিবর্তে ডিফল্ট ম্যানেজার ব্যবহার করা, থ্রিডিংয়ের সমস্যার কারণ হতে পারে।
carlossless

4
থ্রেডিং বিবেচনার অধীনে এনএসফিলম্যানেজার ডক্সের এই কথাটি রয়েছে : "ভাগ করা এনএসফিলম্যানেজার অবজেক্টের পদ্ধতিগুলি একাধিক থ্রেড থেকে নিরাপদে কল করা যেতে পারে।" কেবলমাত্র তার ব্যতিক্রম লক্ষ্য করুন যদি আপনি ফাইল পরিচালকের ক্রিয়াকলাপ থেকে ডেলিগেট কলব্যাকগুলি পরিচালনা করতে চান; আমি এখানে বিশ্বাস করি না।
টিম

লক্ষ্য করুন যে পাথটি ফাইলের 'ফুল পাথ', যা আপনি এটি XCode এর ফাইল ইন্সপেক্টর এর অধীনে খুঁজে পেতে পারেন
বুড়াক

29

এই কাজটি পেতে আপনাকে কেবল করণীয়:

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];

2

আপনার স্থানীয় ইউআরএল "ফাইল: //" দিয়ে শুরু হয় তা নিশ্চিত করুন তবে আপনাকে কেবল এটি করতে হবে:

 NSData *fileData = [NSData dataWithContentsOfFile:fileURL.path];

ইউআরএল সর্বদা সম্পদ-গ্রন্থাগার হিসাবে ফিরে আসে: //asset/asset.MOV? id = 095AA9E9-A4F5-4035-9A21-3CFF04F45C70 & ext = MOV @ahbou
মানসুউ ....

এটি কেবল সম্পদ (ফটো এবং ভিডিও) এর জন্য বৈধ। ওপিকে ডকুমেন্টস ফোল্ডার থেকে একটি ফাইল সম্পর্কে জিজ্ঞাসা করা হচ্ছে
আহবু

আমি যখন নির্বাচিত ইউআরএল থেকে সম্পদ_গ্রন্থে ডেটা অবজেক্ট তৈরি করি তখন এটি আমাকে নিঃশব্দী দেয়
মানসুউ ....

সম্পদগুলি কেবল অ্যাসেট লিবারি বা ফটো.ফ্রেমওয়ার্ক দ্বারা পরিচালিত হয়। সম্পদটি পুনরুদ্ধার করতে আপনাকে asset.assetForURL কল করতে হবে this method এই পদ্ধতিটির জন্য অনুসন্ধান করুন বা এটি একটি আলাদা বিষয় হিসাবে একটি নতুন প্রশ্ন জিজ্ঞাসা করুন।
আহবুউ

0

সুইফট 3-এর জন্য আমি নিম্নলিখিত ইউআরএল থেকে সহায়ক পেয়েছি

(ফোনগ্যাপ প্লাগইন ব্যবহার করে চিত্র ক্যাপচার করার পরে আমি নিম্নলিখিত পথটি পাচ্ছিলাম)

ফাইল: ///var/mobile/Containers/ ডেটা / প্রয়োগ / বি 64B06DE-7976-45CF-9BE2-661F0F309A06/tmp/abcded.jpg)

https://stackoverflow.com/a/41043447/6383908

যদি ভিডিও ইউআরএল = ইউআরএল (স্ট্রিং: ইউআরল স্ট্রিং), ভিডিও কোডটা = চেষ্টা করে দেখি? ডেটা (বিষয়বস্তু: ভিডিও ইউআরএল) {// এলোমোফায়ার কোড এখানে যুক্ত করুন}


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.