दिलचस्प पोस्ट
व्यवस्थापक पर रीडायरेक्ट सहेजें डिवाइस घुमाए जाने पर मेरी कॉर्डोबा / फोनगैप आईओएस एप क्यों नहीं घुमाएं? एम्बेडेड XML फ़ाइल को पढ़ना सी # एंड्रॉइड एप्लिकेशन डेवलपमेंट में मोबाइल नंबर कॉल और संदेश प्राप्त करने के तरीके को कैसे रोकें? shared_ptr जादू :) यह कैसे बताने के लिए कि क्या Google App इंजन प्रलेखन पृष्ठ मानक या लचीला पर्यावरण पर लागू होता है जीआईटी सूचकांक में वास्तव में क्या शामिल है? jQuery – थ्रेड / अतुल्यकालिक किया जा सकता है? आईओएस 8 – एंटरप्राइज़ एप स्थापित नहीं कर सकता JQuery $ .getScript () विधि का उपयोग करते हुए एकाधिक जेएस फ़ाइलों को कैसे शामिल करें I स्थानीय आर पैकेज रिपॉजिटरी बनाना रेगेक्स नेस्टेड कोष्ठक Jsp में जावा विधि को कॉल करना कार्यात्मक प्रोग्रामिंग बनाम ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग क्या करता है: Infks ऑपरेटर Haskell में करते हैं?

Xcode 8 IOS 10 के लिए टूटी NSManagedObject उपवर्ग बनाता है

मैंने आईओएस 10 में हाल ही में अपने आईओएस एप प्रोजेक्ट को अपडेट किया है। अब मैं अपने ऐप के कोर डेटा मॉडल को बदलने की कोशिश कर रहा हूं, लेकिन नया एनएसकेएनएडऑब्जेक्ट उपवर्ग जो एक्सकोड उत्पन्न करते हैं I मैंने उप-वर्ग मैनुअल को ठीक करने का भी प्रयास किया लेकिन यह काम नहीं करता है

कोर डेटा मॉडल के लिए न्यूनतम उपकरण संस्करण Xcode 7.0 पर सेट है और कोड पीढ़ी की भाषा स्विफ्ट पर सेट है

यह कोड है जो Xcode उत्पन्न करता है:

import Foundation import CoreData import extension Group { @nonobjc public class func fetchRequest() -> NSFetchRequest { return NSFetchRequest(entityName: "Group"); } @NSManaged public var name: String? @NSManaged public var platform: NSNumber? @NSManaged public var profiles: NSOrderedSet? } // MARK: Generated accessors for profiles extension Group { @objc(insertObject:inProfilesAtIndex:) @NSManaged public func insertIntoProfiles(_ value: SavedProfile, at idx: Int) @objc(removeObjectFromProfilesAtIndex:) @NSManaged public func removeFromProfiles(at idx: Int) @objc(insertProfiles:atIndexes:) @NSManaged public func insertIntoProfiles(_ values: [SavedProfile], at indexes: NSIndexSet) @objc(removeProfilesAtIndexes:) @NSManaged public func removeFromProfiles(at indexes: NSIndexSet) @objc(replaceObjectInProfilesAtIndex:withObject:) @NSManaged public func replaceProfiles(at idx: Int, with value: SavedProfile) @objc(replaceProfilesAtIndexes:withProfiles:) @NSManaged public func replaceProfiles(at indexes: NSIndexSet, with values: [SavedProfile]) @objc(addProfilesObject:) @NSManaged public func addToProfiles(_ value: SavedProfile) @objc(removeProfilesObject:) @NSManaged public func removeFromProfiles(_ value: SavedProfile) @objc(addProfiles:) @NSManaged public func addToProfiles(_ values: NSOrderedSet) @objc(removeProfiles:) @NSManaged public func removeFromProfiles(_ values: NSOrderedSet) } 

संपादित करें: ये विशिष्ट त्रुटियां हैं जो Xcode देता है:

 1. Group+CoreDataProperties.swift:13:1: Expected identifier in import declaration (the empty import) 2. Group+CoreDataProperties.swift:13:11: 'Group' is ambiguous for type lookup in this context 3. Group+CoreDataProperties.swift:15:16: Cannot specialize non-generic type 'NSFetchRequest' 4. Group+CoreDataProperties.swift:26:11: 'Group' is ambiguous for type lookup in this context 4. Group+CoreDataProperties.swift:43:82: 'SavedProfile' is ambiguous for type lookup in this context 

Solutions Collecting From Web of "Xcode 8 IOS 10 के लिए टूटी NSManagedObject उपवर्ग बनाता है"

आखिरकार मुझे काम करने के लिए मिला मैंने जो किया था यह रहा। (उड़ानें मेरी संस्थाओं में से एक है)

मैं सेटअप xcdatamodeld निम्नानुसार है

यहां छवि विवरण दर्ज करें

और फिर के रूप में इकाई

यहां छवि विवरण दर्ज करें

तब मैंने संपादक का इस्तेमाल किया -> NSManagedObject उपवर्ग बनाएँ

यह मेरी फ्लाइट्स इकाई के लिए दो फाइल बनाता है

टिकट + CoreDataProperties.swift

टिकट + CoreDataClass.swift

मैंने हवाई अड्डों का नाम बदल दिया + CoreDataClass.swift के लिए उड़ानें

उड़ानें

 import Foundation import CoreData @objc(Flights) public class Flights: NSManagedObject { } 

उड़ानें + कोरडेटाप्रॉपर्टीज

 import Foundation import CoreData extension Flights { @nonobjc public class func fetchRequest() -> NSFetchRequest<Flights> { return NSFetchRequest<Flights>(entityName: "Flights"); } @NSManaged public var ... } 

यह मेरे लिए काम करता है। मैं किसी भी अन्य तरीके से काम करने के लिए कोडेन को नहीं मिल सका, भले ही मैंने उन सुझावों की कोशिश की जो वहां मौजूद थे।

इसके अलावा यह मुझे थोड़ी देर के लिए मेरे सिर को खरोंच कर रहा था और मैं उसे सहायता के रूप में जोड़ता हूं। FetchRequest के नए जेनेरिक संस्करण के साथ मत भूलना आप यह कर सकते हैं

 let fetchRequest: NSFetchRequest<NSFetchRequestResult> = NSFetchRequest(entityName: "Flights") 

मेरा मानना ​​है कि कारणों से आपको उन त्रुटियों का सामना करने के बाद एनएसएमएनेड ओब्जेक्ट उप-क्लास फाइलें उत्पन्न हो सकती हैं, जो कोडेन विकल्प से संबंधित हो सकते हैं जो आपके डेटा मॉडल को बदलते समय चुना गया था।

मुझे नहीं लगता कि यह एक बग है एक्सकोड 8.1 (8 बी 62) में कम से कम नहीं।

मुझे एक समान समस्या का सामना करना पड़ा और "मैनुअल / कोई नहीं" को कोडेजन विकल्प बदलकर और "ग्लोबल नेमस्पेस" के रूप में मॉड्यूल विकल्प को छोड़कर इसे तय किया गया। मैंने तब अपने NSManagedObject subclass फ़ाइलों को उत्पन्न किया। हालांकि, आपकी स्थिति पर निर्भर करते हुए, आपको NSManagedObject subclasses भी उत्पन्न करने की आवश्यकता नहीं हो सकती है

नीचे एंट्री के दस्तावेज़ीकरण, एप्पल डेवलपर के फोरम की समीक्षा और अपनी खुद की प्रोजेक्ट के साथ परीक्षण के आधार पर संस्था कोडन विकल्पों पर अधिक विवरण दिए गए हैं I

विकल्प 1: "कक्षा परिभाषा"

  • इसे "प्लग एंड प्ले" विकल्प के रूप में देखें

  • संस्थाओं और संबंधित विशेषताओं को बनाने के लिए मॉडल संपादक का उपयोग करें, जिन्हें आप प्रबंधित करने के लिए कोर डेटा चाहते हैं।

  • NSMangagedObject उपवर्ग जनरेटर का उपयोग न करें। आवश्यक फाइलें आपके द्वारा एक्सोड द्वारा स्वचालित रूप से जनरेट की जाती हैं (हालांकि वे आपके प्रोजेक्ट नेविगेटर में दिखाई नहीं देती हैं)।

  • यदि आप NSManagedObject फाइलों को उत्पन्न करते हैं, तो ऐप्पल आपको बताता है कि इन फ़ाइलों को फाइलों के शीर्ष लेख टिप्पणियों में संपादित नहीं करना चाहिए। यदि आपको इन फ़ाइलों को संपादित करने की आवश्यकता है, तो यह एक अच्छा संकेत है कि आपको किसी अन्य कोडिन विकल्प का उपयोग करना होगा।

  • अपनी संस्था के लिए डिफ़ॉल्ट कक्षा विकल्प छोड़ें (मॉड्यूल = ग्लोबल नेमस्पेस और कोडिन = कक्षा परिभाषा)

  • यदि आपको NSManagedObject के तरीकों को ओवरराइड करना है, तो आप क्लास विकल्प के तहत नाम का उपयोग कर एक एक्सटेंशन बना सकते हैं।

    // Optional extension in Entity.swift extension Entity { // Override NSManagedObject methods }

विकल्प 2: "मैन्युअल / कोई नहीं"

  • विकल्प 1 के समान, सिवाय इसके कि आप NSManagedObject subclass फ़ाइलों को देख और संपादित कर सकते हैं।

  • संस्थाओं और संबंधित विशेषताओं को बनाने के लिए मॉडल संपादक का उपयोग करें, जिन्हें आप प्रबंधित करने के लिए कोर डेटा चाहते हैं।

  • NSManagedObject subclass जनरेटर का उपयोग करने से पहले, इकाई के लिए "मैन्युअल / कोई नहीं" को कॉडजन विकल्प सेट करें मॉड्यूल विकल्प वैश्विक नामस्थान होना चाहिए।

  • एक विशेषता को जोड़ने / हटाने / अपडेट करने के बाद, आपके पास दो विकल्प हैं: (1) आपके लिए जेनरेट किए गए NSManagedObject फ़ाइलों को मैन्युअल रूप से अपडेट करें या (2) NSManagedObject subclass जनरेटर का पुन: उपयोग करें (यह केवल इकाई + CoreDataProperties.swift फ़ाइल को अपडेट करेगा )।

  • दोबारा, अगर आपको ओवरलैड और एनएसएमएनेज ऑब्जेक्ट के तरीकों की आवश्यकता है, तो आप एक एक्सटेंशन बना सकते हैं। एक्सटेंशन को इकाई + कोरडेटा क्लास.swift फ़ाइल में बनाया जाना चाहिए, न कि इकाई + कोरडेटाप्रॉपर्टीज.swift फ़ाइल (यह फ़ाइल मॉडल संपादक परिवर्तनों के कारण अपडेट हो सकती है)।

    // Optional extension in Entity+CoreDataClass.swift extension Entity { // Override NSManagedObject methods }

विकल्प 3: "श्रेणी / विस्तार"

  • इस विकल्प का उपयोग करें यदि आपके पास कस्टम गुण हैं जिन्हें Core Data द्वारा प्रबंधित करने की आवश्यकता नहीं है।

  • संस्थाओं और संबंधित विशेषताओं को बनाने के लिए मॉडल संपादक का उपयोग करें, जिन्हें आप प्रबंधित करने के लिए कोर डेटा चाहते हैं।

  • सुनिश्चित करें कि मॉड्यूल विकल्प को चालू उत्पाद मॉड्यूल पर सेट किया गया है और "श्रेणी / एक्सटेंशन" पर सेट किया गया है।

  • अपनी खुद की NSManagedObject subclass उन गुणों के साथ बनाएँ जो आप स्वयं को प्रबंधित करेंगे।

  • NSMangagedObject उपवर्ग जनरेटर का उपयोग न करें। आवश्यक फाइलें आपके द्वारा एक्सोड द्वारा स्वचालित रूप से जनरेट की जाती हैं (हालांकि वे आपके प्रोजेक्ट नेविगेटर में दिखाई नहीं देती हैं)।

    // Subclass NSManagedObject in Entity.swift class Entity: NSManagedObject { // Self managed properties }

    // Optional extension in Entity.swift extension Entity { // Override NSManagedObject methods }

  1. इस समस्या को हल करने के लिए ऐप के व्युत्पन्न डेटा को हटा दें।

  2. फिर मॉड्यूल को वर्तमान उत्पाद मॉड्यूल में परिवर्तित करें और मैन्युअल / कोई नहीं के लिए कोडन में भी परिवर्तन करें।

  3. सामग्री सूचीबद्ध करें

CodeGen सेट करने का प्रयास करें: मैनुअल / कोई नहीं मॉड्यूल: वर्तमान उत्पाद मॉड्यूल

यह मेरे लिए अच्छी तरह से काम करता था, जब मुझे एक ही समस्या का सामना करना पड़ा।

यहां छवि विवरण दर्ज करें

3 import कथन हटाएं क्योंकि यह खाली है

नोट: मुझे नहीं पता कि ऐसा क्यों होता है, लेकिन मुझे लगता है कि यह एक बग है Xcode 8. बस इसे हटा दें और यह ठीक काम करेगा।

यदि आपके पास एक विरासत ऐप है और आप मैन्युअल रूप से प्रबंधित वस्तु वर्गों को जोड़ना चाहते हैं

  1. सुनिश्चित करें कि आपका कोर डेटा मॉडल कोडजन मैन्युअल / कोई नहीं पर सेट है
  2. अपनी कोर डेटा मॉडल फ़ाइल का चयन करें
  3. प्रबंधित वस्तु उपवर्ग बनाएं

संपादक का स्क्रीनशॉट

आप इन चरणों का प्रयास कर सकते हैं

  1. Xocde परियोजना नेविगेटर में .xcdatamodeld फ़ाइल का चयन करें
  2. डेटा मॉडुल इंस्पेक्टर में , सुनिश्चित करें कि कोडन : मैनुअल / कोई नहीं
  3. फिर संपादित करें -> NSManagedObject उपवर्ग बनाएँ
  4. स्वच्छ उत्पाद और पुनर्निर्माण

क्या यह काम है? अगर नहीं

सुनिश्चित करें कि आप सभी वर्ग की इकाईयों के साथ समान नाम नहीं हैं आप इन वर्गों को बिल्ड चरणों में पा सकते हैं -> सूत्रों को संकलित करें क्लास या संस्थाओं का नाम बदलें यदि वे डुप्लिकेट करते हैं

या

आप अधिक त्रुटि जानकारी प्राप्त करने के लिए अपने आदेश फ़ोल्डर में इस आदेश को चला सकते हैं

xcodebuild -verbose

जब मुझे यह समस्या है तो मुझे यह संदेश मिला

डुप्लिकेट प्रतीक _OBJC_CLASS _ $ _ यादृच्छिक सूची में:

xxxx / RandomList.o

xxxx / RandomList + CoreDataClass.o

RandomList.h और RandomList + CoreDataClass.h का संकलन करते समय एक समान प्रतीक है

मुझे लगता है कि Xcode ने आपको चेतावनी नहीं दी, लेकिन कम्पाइलर त्रुटि को फेंक देगा

आशा है कि यह आपकी मदद करेगा

मुझे लगता है कि यह एक xcode मुद्दा है, जहां xcode मुख्य डेटा वर्ग श्रेणी के लिए गलत सिंटैक्स उत्पन्न करता है। मैं एक इकाई AgentDetails nsmanageobjectsubclass लिए एक nsmanageobjectsubclass बना रहा हूँ यह निम्नलिखित कक्षाएं बना रहा है

यहां Xcode में गलत कोड संरचना AgentDetails+CoreDataClass.h और AgentDetails+CoreDataClass.m । उनके पास एक कोड संरचना है जैसे:

यहां छवि विवरण दर्ज करें

तथा

यहां छवि विवरण दर्ज करें

इसलिए यह डुप्लिकेट इंटरफ़ेस समस्या है जैसा कि AgentDetails.h एक ही इंटरफ़ेस है।

अब इसे ठीक करने के लिए आपको AgentDetails+CoreDataClass.h को कोड में AgentDetails+CoreDataClass.h

यहां छवि विवरण दर्ज करें

और AgentDetails+CoreDataClass.m इस तरह से:

यहां छवि विवरण दर्ज करें

Xcode 8.2.1 पर , मैंने इसे जिस तरह से बनाया: ( डैनियल चेप्न्को के लिए धन्यवाद)

यहां छवि विवरण दर्ज करें

लेकिन Xcode 8.2.1 एक बेवकूफ जोड़ देगा उत्पन्न फ़ाइलों में:

यहां छवि विवरण दर्ज करें

बस को हटा दें और यह सही चला जाएगा

डेटा मॉडल इंस्पेक्टर में 'मॉड्यूल' के तहत वर्तमान उत्पाद मॉड्यूल का चयन करें और 'कोडन' के तहत मैनुअल / कोई भी नहीं। (इससे आप उप-वर्ग फ़ाइलों को संपादित कर सकते हैं और कोरएडाटाप्रॉपर्टीज़्स। स्फ़्टफ़्ट को दोबारा बनाने के लिए अनुमति देते हैं जब आप एक ही इकाई के अंतर्गत अपनी विशेषताओं को संशोधित कर सकते हैं।)

यहां छवि विवरण दर्ज करें

आप तब संपादक मेनू के तहत NSManagedObjectSubclass बना सकते हैं। Xcode आपके लिए 2 फाइलें बनाएगा आपकी ईन्टीटी + कोरडेटा क्लास.swift और YourEntity + CoreDataProperties.swift। ध्यान दें कि आपके पास नवीनतम एक्सकोड (8.2.1) नहीं है, तो आप अपने मॉडल इंस्पेक्टर में सेट किए गए किसी भी वैकल्पिक / गैर-प्रॉपर्टी गुण सही तरीके से दिखाई नहीं देंगे। आप YourEntity + CoreDataProperties.swift फ़ाइल में संपादित कर सकते हैं।

मुझे सिर्फ एक समस्या थी जहां मैंने अपने मॉडल में कोर डेटा टेम्पलेट में एक व्यक्ति इकाई को जोड़ा था। उसके बाद उसके लिए एनएसएमएएनजीड ओब्जेक्ट उपवर्ग बनाया गया और यह संकलन नहीं करेगा, मुझे एक लिंकर त्रुटि दे। मैं इसे काम करने के लिए मैन्युअल / कोई भी कोडेज विकल्प को बदलना चाहता हूं (तस्वीर के नीचे-दाएं हिस्से देखें)। यहां छवि विवरण दर्ज करें

एक्सकोड 8.1 आंतरिक रूप से मॉडल वर्ग को पैदा करता है। सिर्फ 2 वर्गों को हटाएं और आप अभी भी अपने कोड में संस्थाओं का उपयोग करने में सक्षम होंगे।

यहाँ मैं प्राप्त कर रहा था त्रुटि संदेश है

 <unknown>:0: error: filename "Recipe+CoreDataProperties.swift" used twice: '/Users/Rick/Desktop/Devslop/Rick Recipe/Recipe+CoreDataProperties.swift' and '/Users/Rick/Library/Developer/Xcode/DerivedData/Rick_Recipe-cctgjudvqobxlwetbcwmzrgxigwg/Build/Intermediates/Rick Recipe.build/Debug-iphonesimulator/Rick Recipe.build/DerivedSources/CoreDataGenerated/Rick_Recipe/Recipe+CoreDataProperties.swift' <unknown>:0: note: filenames are used to distinguish private declarations with the same name Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc failed with exit code 1 

मुझे डेविड एटकिन्सन से यह पोस्ट मिला है जो किसी तरह से उपयोगी है। अगर मैं कोड को जिस तरह से दाऊद ने वर्णित किया है, उस पर उत्पन्न करता हूं। मुझे कुछ सिंटैक्स त्रुटियों के साथ कोड मिलता है और अगर मैं त्रुटियों को ठीक करता हूँ तो इससे पहले की तरह काम करता है '।' से शुरु होने वाली कोई ग़लत फाइल नहीं है किसी भी अधिक

सिंटैक्स त्रुटियों को मुझे ठीक करना है – अनावश्यक आयात – और कुछ सार्वजनिक संपत्तियां जो मेरे कोड में सार्वजनिक होने का इरादा नहीं हैं

मैं नवीनतम Xcode 8.1 बीटा (8T47) बिल्ड चल रहा हूं।

त्रुटि लॉग (नीचे देखें) के अनुसार, autogenerated फ़ाइलों की दो प्रतिलिपियां बनाई गई हैं। एक कॉपी आपके Xcode प्रोजेक्ट फ़ोल्डर में डाल दी जाती है (Xcode के बाएं हाथ के टूलबार पर आपकी निर्देशिका में दिखाई देने वाला एक), और आपकी प्रोजेक्ट के लिए आपके व्युत्पन्न डेटा फ़ोल्डर में दूसरी प्रति बनाई गई है:

 /Users/<your name>/Library/Developer/Xcode/DerivedData/<your app>-axhtnodotznxnrenefflktnxfeal/Build/Intermediates/<your app>.build/Debug-iphonesimulator/<your app>.build/DerivedSources/CoreDataGenerated/<your app>/<class name>+CoreDataProperties.swift /Users/<your name>/Library/Developer/Xcode/DerivedData/<your app>-axhtnodotznxnrenefflktnxfeal/Build/Intermediates/<your app>.build/Debug-iphonesimulator/<your app>.build/DerivedSources/CoreDataGenerated/<your app>/<class name>+CoreDataClass.swift 

आपकी Xcode प्रोजेक्ट डायरेक्टरी में प्रतियां हटाने से सभी समस्याएं ठीक हो जाएंगी, लेकिन यह स्पष्ट नहीं दिखाती कि आप इन फ़ाइलों को अब संपादित नहीं कर सकते हैं …

मैं यह नहीं कहूंगा कि यह एक समाधान है, बल्कि परियोजना का निर्माण करने के लिए सिर्फ एक आधा गधे तरीका है। उम्मीद है कि इस बग को जल्द ही संबोधित किया जाएगा।

त्रुटि संग्रह

इसके अलावा, यदि आप अपने आप को एनएसएमएएनजीओब्जेक्ट उप-क्लास जोड़ते हैं, तो निम्न चरण का पालन करने के लिए मत भूलें: '.xcdatamodeld' पर जाएं – इकाई चुनें – डेटा मॉडल निरीक्षक दिखाएं -> कोडन -> मैनुअल / कोई नहीं चुनें '

यह मेरे लिए काम किया

मेरे लिए, मैंने एनएसएमएनेडऑब्जेक्ट की उप-कक्षाओं से मैन्युअल रूप से कोकोआउच वर्ग बनाया। मैं मॉड्यूल को वर्तमान उत्पाद मॉड्यूल और श्रेणीकरण के रूप में श्रेणी / विस्तार के रूप में सेट करता हूं और यह अच्छी तरह से काम करता है।

आपको क्या करने की ज़रूरत है कोडएन को श्रेणी / विस्तार में सेट करने से पहले NSManagedObject उपवर्ग बनाएँ

मेरे पास एक एयरलाइटी है और डेटा मॉडल इंस्पेक्टर में ये सेटिंग्स मेरे लिए काम करती हैं:

  1. नाम को कुछ भी नहीं सेट करें (आप "NSManagedObject" का कुछ धूसर हुए पाठ देखेंगे) डिफ़ॉल्ट को "फ्लाइट" के रूप में लिखा जाएगा, बस उसे हटा दें।

  2. मॉड्यूल में कुछ भी नहीं है। "ग्लोबल नेमस्पेस" ग्रेड आउट है जिसे आप देखेंगे।

  3. मैनुअल / कोई नहीं करने के लिए Codegen

  4. फिर गोटो एडिटर -> स्विफ्ट फाइल बनाने के लिए एनएसएमएनेड ओब्जेक्ट उपवर्गा बनाएं

  5. हवाई टिकटों का नाम बदलें- कोरडाटा क्लास

यहां स्क्रीनशॉट का लिंक है (किसी कारण से इगगूर इसे खारिज कर रहा था :() https://drive.google.com/file/d/0B8a3rG93GTRedkhvbWc5Ujl4Unc/view?usp=sharing

के बाद मैं निम्नलिखित नाम दिया:

से: आपकी ईन्टीटी + कोरडेटा क्लास। को भेजें: आपका ईन्तिटी.swift

तथा

से: आपकी ईन्द्रटी + कोरडेटाप्रॉपर्टीज़। को भेजें: आपकी एंटीटीकोरेटप्रापर्टीज़।

तो यह काम करता है ऐसा लगता है कि "+" समस्या पैदा कर रहा है।